]> err.no Git - linux-2.6/commitdiff
[CIFS] Make cifs default wsize match what we actually want to send (52K
authorSteve French <sfrench@us.ibm.com>
Wed, 25 Jan 2006 04:26:48 +0000 (20:26 -0800)
committerSteve French <sfrench@us.ibm.com>
Wed, 25 Jan 2006 04:26:48 +0000 (20:26 -0800)
typically - header + 13 pages).

Forgetting to set wsize on the mount command costs more than 10% on large
write (can be much more) so this makes a saner default.  We still shrink
this default smaller if server can not support it.

Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/connect.c

index 88f60aa520584a87acab13422d22940063f2b536..eae306fa24b2f97e6c51332bdc8a3ffbb806c1a6 100644 (file)
@@ -1785,7 +1785,15 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
                } else if(volume_info.wsize)
                        cifs_sb->wsize = volume_info.wsize;
                else
-                       cifs_sb->wsize = CIFSMaxBufSize; /* default */
+                       cifs_sb->wsize = 
+                               min(PAGEVEC_SIZE * PAGE_CACHE_SIZE, 127*1024);
+                       /* old default of CIFSMaxBufSize was too small now
+                          that SMB Write2 can send multiple pages in kvec.   
+                          RFC1001 does not describe what happens when frame
+                          bigger than 128K is sent so use that as max in
+                          conjunction with 52K kvec constraint on arch with 4K
+                          page size  */
+
                if(cifs_sb->rsize < PAGE_CACHE_SIZE) {
                        cifs_sb->rsize = PAGE_CACHE_SIZE; 
                        /* Windows ME does this */