diff mbox series

[v3,2/5] NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS

Message ID 20220514142704.4149-3-trondmy@kernel.org (mailing list archive)
State New
Headers show
Series Ensure mapping errors are reported only once | expand

Commit Message

trondmy@kernel.org May 14, 2022, 2:27 p.m. UTC
From: Trond Myklebust <trond.myklebust@hammerspace.com>

If the commit to disk is interrupted, we should still first check for
filesystem errors so that we can report them in preference to the error
due to the signal.

Fixes: 2197e9b06c22 ("NFS: Fix up fsync() when the server rebooted")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
 fs/nfs/file.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
diff mbox series


diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 150b7fa8f0a7..7c380e555224 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -204,15 +204,16 @@  static int
 nfs_file_fsync_commit(struct file *file, int datasync)
 	struct inode *inode = file_inode(file);
-	int ret;
+	int ret, ret2;
 	dprintk("NFS: fsync file(%pD2) datasync %d\n", file, datasync);
 	nfs_inc_stats(inode, NFSIOS_VFSFSYNC);
 	ret = nfs_commit_inode(inode, FLUSH_SYNC);
-	if (ret < 0)
-		return ret;
-	return file_check_and_advance_wb_err(file);
+	ret2 = file_check_and_advance_wb_err(file);
+	if (ret2 < 0)
+		return ret2;
+	return ret;