Skip to content

Commit

Permalink
NFS: Getattr doesn't require data sync semantics
Browse files Browse the repository at this point in the history
When retrieving stat() information, NFS unfortunately does require us to
sync writes to disk in order to ensure that mtime and ctime are up to
date. However we shouldn't have to ensure that those writes are persisted.

Relaxing that requirement does mean that we may see an mtime/ctime change
if the server reboots and forces us to replay all writes.

The exception to this rule are pNFS clients that are required to send
layoutcommit, however that is dealt with by the call to pnfs_sync_inode()
in _nfs_revalidate_inode().

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
  • Loading branch information
Trond Myklebust committed Jul 5, 2016
1 parent 651b0e7 commit 79566ef
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions fs/nfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -661,9 +661,7 @@ 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)) {
inode_lock(inode);
err = nfs_sync_inode(inode);
inode_unlock(inode);
err = filemap_write_and_wait(inode->i_mapping);
if (err)
goto out;
}
Expand Down

0 comments on commit 79566ef

Please sign in to comment.