Commit 8aeba3c6 authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/pub/scm/linux/kernel/git/sfrench/cifs-2.6

parents 61ee9cd5 e6da74e1
...@@ -1785,7 +1785,16 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, ...@@ -1785,7 +1785,16 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
} else if(volume_info.wsize) } else if(volume_info.wsize)
cifs_sb->wsize = volume_info.wsize; cifs_sb->wsize = volume_info.wsize;
else else
cifs_sb->wsize = CIFSMaxBufSize; /* default */ cifs_sb->wsize =
min_t(const int, 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) { if(cifs_sb->rsize < PAGE_CACHE_SIZE) {
cifs_sb->rsize = PAGE_CACHE_SIZE; cifs_sb->rsize = PAGE_CACHE_SIZE;
/* Windows ME does this */ /* Windows ME does this */
......
...@@ -1190,7 +1190,6 @@ retry: ...@@ -1190,7 +1190,6 @@ retry:
/* BB what if continued retry is /* BB what if continued retry is
requested via mount flags? */ requested via mount flags? */
set_bit(AS_EIO, &mapping->flags); set_bit(AS_EIO, &mapping->flags);
SetPageError(page);
} else { } else {
cifs_stats_bytes_written(cifs_sb->tcon, cifs_stats_bytes_written(cifs_sb->tcon,
bytes_written); bytes_written);
...@@ -1198,6 +1197,13 @@ retry: ...@@ -1198,6 +1197,13 @@ retry:
} }
for (i = 0; i < n_iov; i++) { for (i = 0; i < n_iov; i++) {
page = pvec.pages[first + i]; page = pvec.pages[first + i];
/* Should we also set page error on
success rc but too little data written? */
/* BB investigate retry logic on temporary
server crash cases and how recovery works
when page marked as error */
if(rc)
SetPageError(page);
kunmap(page); kunmap(page);
unlock_page(page); unlock_page(page);
page_cache_release(page); page_cache_release(page);
......
...@@ -498,7 +498,6 @@ SendReceive2(const unsigned int xid, struct cifsSesInfo *ses, ...@@ -498,7 +498,6 @@ SendReceive2(const unsigned int xid, struct cifsSesInfo *ses,
else else
*pRespBufType = CIFS_SMALL_BUFFER; *pRespBufType = CIFS_SMALL_BUFFER;
iov[0].iov_len = receive_len + 4; iov[0].iov_len = receive_len + 4;
iov[1].iov_len = 0;
dump_smb(midQ->resp_buf, 80); dump_smb(midQ->resp_buf, 80);
/* convert the length into a more usable form */ /* convert the length into a more usable form */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment