cifs: Fix cifs_write_back_from_locked_folio()
authorDavid Howells <dhowells@redhat.com>
Mon, 27 Feb 2023 13:04:53 +0000 (13:04 +0000)
committerSteve French <stfrench@microsoft.com>
Thu, 2 Mar 2023 00:18:25 +0000 (18:18 -0600)
cifs_write_back_from_locked_folio() should return the number of bytes read,
but returns the result of ->async_writev(), which will be 0 on success.  As
it happens, this doesn't prevent cifs_writepages_region() from working as
it will then examine and ignore the pages that are no longer dirty rather
than just skipping over them.

Fixes: d08089f649a0 ("cifs: Change the I/O paths to use an iterator rather than a page list")
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Shyam Prasad N <nspmangalore@gmail.com>
cc: Rohith Surabattula <rohiths.msft@gmail.com>
cc: Tom Talpey <tom@talpey.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-cifs@vger.kernel.org
Reviewed-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/file.c

index 879524b..ec0694a 100644 (file)
@@ -2845,6 +2845,7 @@ err_xid:
        free_xid(xid);
        if (rc == 0) {
                wbc->nr_to_write = count;
+               rc = len;
        } else if (is_retryable_error(rc)) {
                cifs_pages_write_redirty(inode, start, len);
        } else {