NFS: Do not report writeback errors in nfs_getattr()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Tue, 15 Feb 2022 23:05:18 +0000 (18:05 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 Feb 2022 10:56:41 +0000 (11:56 +0100)
[ Upstream commit d19e0183a88306acda07f4a01fedeeffe2a2a06b ]

The result of the writeback, whether it is an ENOSPC or an EIO, or
anything else, does not inhibit the NFS client from reporting the
correct file timestamps.

Fixes: 79566ef018f5 ("NFS: Getattr doesn't require data sync semantics")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/nfs/inode.c

index 7a94f5a5f8c8ca5d02b8f8a2c0713cb084af9f8c..99a67d132ec30b0615d87db719df1db8e777711a 100644 (file)
@@ -661,11 +661,8 @@ int nfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
 
        trace_nfs_getattr_enter(inode);
        /* Flush out writes to the server in order to update c/mtime.  */
-       if (S_ISREG(inode->i_mode)) {
-               err = filemap_write_and_wait(inode->i_mapping);
-               if (err)
-                       goto out;
-       }
+       if (S_ISREG(inode->i_mode))
+               filemap_write_and_wait(inode->i_mapping);
 
        /*
         * We may force a getattr if the user cares about atime.
@@ -693,7 +690,7 @@ int nfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
                if (S_ISDIR(inode->i_mode))
                        stat->blksize = NFS_SERVER(inode)->dtsize;
        }
-out:
+
        trace_nfs_getattr_exit(inode, err);
        return err;
 }