Skip to content

Commit 8fc75be

Browse files
trondmyamschuma-ntap
authored andcommitted
NFS: Fix up return value on fatal errors in nfs_page_async_flush()
Ensure that we return the fatal error value that caused us to exit nfs_page_async_flush(). Fixes: c373fff ("NFSv4: Don't special case "launder"") Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Cc: stable@vger.kernel.org # v4.12+ Reviewed-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
1 parent 80ff001 commit 8fc75be

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

fs/nfs/write.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -621,11 +621,12 @@ static int nfs_page_async_flush(struct nfs_pageio_descriptor *pgio,
621621
nfs_set_page_writeback(page);
622622
WARN_ON_ONCE(test_bit(PG_CLEAN, &req->wb_flags));
623623

624-
ret = 0;
624+
ret = req->wb_context->error;
625625
/* If there is a fatal error that covers this write, just exit */
626-
if (nfs_error_is_fatal_on_server(req->wb_context->error))
626+
if (nfs_error_is_fatal_on_server(ret))
627627
goto out_launder;
628628

629+
ret = 0;
629630
if (!nfs_pageio_add_request(pgio, req)) {
630631
ret = pgio->pg_error;
631632
/*
@@ -635,9 +636,9 @@ static int nfs_page_async_flush(struct nfs_pageio_descriptor *pgio,
635636
nfs_context_set_write_error(req->wb_context, ret);
636637
if (nfs_error_is_fatal_on_server(ret))
637638
goto out_launder;
638-
}
639+
} else
640+
ret = -EAGAIN;
639641
nfs_redirty_request(req);
640-
ret = -EAGAIN;
641642
} else
642643
nfs_add_stats(page_file_mapping(page)->host,
643644
NFSIOS_WRITEPAGES, 1);

0 commit comments

Comments
 (0)