| From 149a4fddd0a72d526abbeac0c8deaab03559836a Mon Sep 17 00:00:00 2001 |
| From: Benjamin Coddington <bcodding@redhat.com> |
| Date: Mon, 18 Jul 2016 10:41:57 -0400 |
| Subject: nfs: don't create zero-length requests |
| |
| From: Benjamin Coddington <bcodding@redhat.com> |
| |
| commit 149a4fddd0a72d526abbeac0c8deaab03559836a upstream. |
| |
| NFS doesn't expect requests with wb_bytes set to zero and may make |
| unexpected decisions about how to handle that request at the page IO layer. |
| Skip request creation if we won't have any wb_bytes in the request. |
| |
| Signed-off-by: Benjamin Coddington <bcodding@redhat.com> |
| Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> |
| Reviewed-by: Weston Andros Adamson <dros@primarydata.com> |
| Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/nfs/write.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/fs/nfs/write.c |
| +++ b/fs/nfs/write.c |
| @@ -1261,6 +1261,9 @@ int nfs_updatepage(struct file *file, st |
| dprintk("NFS: nfs_updatepage(%pD2 %d@%lld)\n", |
| file, count, (long long)(page_file_offset(page) + offset)); |
| |
| + if (!count) |
| + goto out; |
| + |
| if (nfs_can_extend_write(file, page, inode)) { |
| count = max(count + offset, nfs_page_length(page)); |
| offset = 0; |
| @@ -1271,7 +1274,7 @@ int nfs_updatepage(struct file *file, st |
| nfs_set_pageerror(page); |
| else |
| __set_page_dirty_nobuffers(page); |
| - |
| +out: |
| dprintk("NFS: nfs_updatepage returns %d (isize %lld)\n", |
| status, (long long)i_size_read(inode)); |
| return status; |