diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/cifs/connect.c | 11 | ||||
-rw-r--r-- | fs/cifs/file.c | 8 | ||||
-rw-r--r-- | fs/cifs/transport.c | 1 | ||||
-rw-r--r-- | fs/compat.c | 12 |
4 files changed, 23 insertions, 9 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 88f60aa52058..e488603fb1e7 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
@@ -1785,7 +1785,16 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, | |||
1785 | } else if(volume_info.wsize) | 1785 | } else if(volume_info.wsize) |
1786 | cifs_sb->wsize = volume_info.wsize; | 1786 | cifs_sb->wsize = volume_info.wsize; |
1787 | else | 1787 | else |
1788 | cifs_sb->wsize = CIFSMaxBufSize; /* default */ | 1788 | cifs_sb->wsize = |
1789 | min_t(const int, PAGEVEC_SIZE * PAGE_CACHE_SIZE, | ||
1790 | 127*1024); | ||
1791 | /* old default of CIFSMaxBufSize was too small now | ||
1792 | that SMB Write2 can send multiple pages in kvec. | ||
1793 | RFC1001 does not describe what happens when frame | ||
1794 | bigger than 128K is sent so use that as max in | ||
1795 | conjunction with 52K kvec constraint on arch with 4K | ||
1796 | page size */ | ||
1797 | |||
1789 | if(cifs_sb->rsize < PAGE_CACHE_SIZE) { | 1798 | if(cifs_sb->rsize < PAGE_CACHE_SIZE) { |
1790 | cifs_sb->rsize = PAGE_CACHE_SIZE; | 1799 | cifs_sb->rsize = PAGE_CACHE_SIZE; |
1791 | /* Windows ME does this */ | 1800 | /* Windows ME does this */ |
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 77c990f0cb98..d17c97d07c80 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
@@ -1190,7 +1190,6 @@ retry: | |||
1190 | /* BB what if continued retry is | 1190 | /* BB what if continued retry is |
1191 | requested via mount flags? */ | 1191 | requested via mount flags? */ |
1192 | set_bit(AS_EIO, &mapping->flags); | 1192 | set_bit(AS_EIO, &mapping->flags); |
1193 | SetPageError(page); | ||
1194 | } else { | 1193 | } else { |
1195 | cifs_stats_bytes_written(cifs_sb->tcon, | 1194 | cifs_stats_bytes_written(cifs_sb->tcon, |
1196 | bytes_written); | 1195 | bytes_written); |
@@ -1198,6 +1197,13 @@ retry: | |||
1198 | } | 1197 | } |
1199 | for (i = 0; i < n_iov; i++) { | 1198 | for (i = 0; i < n_iov; i++) { |
1200 | page = pvec.pages[first + i]; | 1199 | page = pvec.pages[first + i]; |
1200 | /* Should we also set page error on | ||
1201 | success rc but too little data written? */ | ||
1202 | /* BB investigate retry logic on temporary | ||
1203 | server crash cases and how recovery works | ||
1204 | when page marked as error */ | ||
1205 | if(rc) | ||
1206 | SetPageError(page); | ||
1201 | kunmap(page); | 1207 | kunmap(page); |
1202 | unlock_page(page); | 1208 | unlock_page(page); |
1203 | page_cache_release(page); | 1209 | page_cache_release(page); |
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c index 7b98792150ea..b12cb8a7da7c 100644 --- a/fs/cifs/transport.c +++ b/fs/cifs/transport.c | |||
@@ -498,7 +498,6 @@ SendReceive2(const unsigned int xid, struct cifsSesInfo *ses, | |||
498 | else | 498 | else |
499 | *pRespBufType = CIFS_SMALL_BUFFER; | 499 | *pRespBufType = CIFS_SMALL_BUFFER; |
500 | iov[0].iov_len = receive_len + 4; | 500 | iov[0].iov_len = receive_len + 4; |
501 | iov[1].iov_len = 0; | ||
502 | 501 | ||
503 | dump_smb(midQ->resp_buf, 80); | 502 | dump_smb(midQ->resp_buf, 80); |
504 | /* convert the length into a more usable form */ | 503 | /* convert the length into a more usable form */ |
diff --git a/fs/compat.c b/fs/compat.c index cc58a20df57a..70c5af4cc270 100644 --- a/fs/compat.c +++ b/fs/compat.c | |||
@@ -73,17 +73,17 @@ asmlinkage long compat_sys_utime(char __user *filename, struct compat_utimbuf __ | |||
73 | return do_utimes(AT_FDCWD, filename, t ? tv : NULL); | 73 | return do_utimes(AT_FDCWD, filename, t ? tv : NULL); |
74 | } | 74 | } |
75 | 75 | ||
76 | asmlinkage long compat_sys_futimesat(int dfd, char __user *filename, struct compat_timeval __user *t) | 76 | asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename, struct compat_timeval __user *t) |
77 | { | 77 | { |
78 | struct timeval tv[2]; | 78 | struct timeval tv[2]; |
79 | 79 | ||
80 | if (t) { | 80 | if (t) { |
81 | if (get_user(tv[0].tv_sec, &t[0].tv_sec) || | 81 | if (get_user(tv[0].tv_sec, &t[0].tv_sec) || |
82 | get_user(tv[0].tv_usec, &t[0].tv_usec) || | 82 | get_user(tv[0].tv_usec, &t[0].tv_usec) || |
83 | get_user(tv[1].tv_sec, &t[1].tv_sec) || | 83 | get_user(tv[1].tv_sec, &t[1].tv_sec) || |
84 | get_user(tv[1].tv_usec, &t[1].tv_usec)) | 84 | get_user(tv[1].tv_usec, &t[1].tv_usec)) |
85 | return -EFAULT; | 85 | return -EFAULT; |
86 | } | 86 | } |
87 | return do_utimes(dfd, filename, t ? tv : NULL); | 87 | return do_utimes(dfd, filename, t ? tv : NULL); |
88 | } | 88 | } |
89 | 89 | ||
@@ -114,7 +114,7 @@ asmlinkage long compat_sys_newlstat(char __user * filename, | |||
114 | return error; | 114 | return error; |
115 | } | 115 | } |
116 | 116 | ||
117 | asmlinkage long compat_sys_newfstatat(int dfd, char __user *filename, | 117 | asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user *filename, |
118 | struct compat_stat __user *statbuf, int flag) | 118 | struct compat_stat __user *statbuf, int flag) |
119 | { | 119 | { |
120 | struct kstat stat; | 120 | struct kstat stat; |
@@ -1326,7 +1326,7 @@ compat_sys_open(const char __user *filename, int flags, int mode) | |||
1326 | * O_LARGEFILE flag. | 1326 | * O_LARGEFILE flag. |
1327 | */ | 1327 | */ |
1328 | asmlinkage long | 1328 | asmlinkage long |
1329 | compat_sys_openat(int dfd, const char __user *filename, int flags, int mode) | 1329 | compat_sys_openat(unsigned int dfd, const char __user *filename, int flags, int mode) |
1330 | { | 1330 | { |
1331 | return do_sys_open(dfd, filename, flags, mode); | 1331 | return do_sys_open(dfd, filename, flags, mode); |
1332 | } | 1332 | } |