[linux-cifs-client] Re: Samba 3.11pre not handling ReadX of exactly 64K when ReadX wct=12 rather than 10

Steve French smfrench at austin.rr.com
Wed Dec 22 03:25:29 GMT 2004


The change to handle 64K or more on read is now in the cifs bk tree - 
thank you jra - cifs now happily sends 127K read requests to Samba if 
CIFSMaxBufSize is set to at least that and Samba 3 happily returns 127K 
read responses (note that it also will be in mm tree soon since Andrew 
Morton syncs with the cifs bk tree regularly) but will probably miss 
2.6.10 unless there is some compelling crisis - since performance 
already is pretty good on cifs reads and writes with directio mounts and 
using 32K - 63K CIFSMaxBufSize, and performance is adequate but non 
optimal on cached (nondirectio mounts) reads. I am now getting curious 
about trying varius network test on 100Mb and 1Gb and 10Gb tests to get 
more realistic comparisons on MTU, jumboframes and optimal CIFS setting 
for CIFSMaxBufSize and Samba max xmit. I wanted to try some experiments 
with Samba 4 (not just Samba 3.11pre) but I can crash Samba 4 server 
pretty easily it did not stay up long enough to do any real testing on 
(I may have to start running gdb against Samba 4 and see what is going 
on - it was building without ldap so it may be hitting less used paths 
on the server).

But getting directio (not going through client page cache) is much 
easier than fixing the cached (cifs_readpages, cifs_readpage and 
cifs_writepage) more common cases. I have worked though at least one 
feasible approach to fix cifs_readpages (on the client) to make it 
perform fine without to mount directio (and thus bypassing the client 
page cache) but the write path is -- much -- much -- harder . 
generic_writepages path is a mess in Linux - very hard to do a sane 
writepages implementation - and zero filesystems - not even nfs - do 
real work in writepages (only in writepage invoked from 
generic_writepages and the mpage.c equilvalent). I should be able to 
bump up performance measurntly on the write path by getting rid of a 
copy (gather send on the socket of the dirty page) - but to get this 
where I want (ie better than nfs for the cached case on writes) is is 
going to be hard. I think the read case I can get to by mid January 
though (ie very good perf without mounting directio).



More information about the linux-cifs-client mailing list