summaryrefslogtreecommitdiff
path: root/fs/nfs
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@hammerspace.com>2021-12-16 00:38:15 +0300
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2022-01-06 22:00:20 +0300
commit204975036b34f55237bc44c8a302a88468ef21b5 (patch)
tree65b81ecd87a39548619359a1d92346495fdfc79a /fs/nfs
parent6238aec83f3fb12132f964937e5bbcf248fea8f9 (diff)
downloadlinux-204975036b34f55237bc44c8a302a88468ef21b5.tar.xz
NFS: Ensure the server has an up to date ctime before hardlinking
Creating a hard link is required by POSIX to update the file ctime, so ensure that the file data is synced to disk so that we don't clobber the updated ctime by writing back after creating the hard link. Fixes: 9f7682728728 ("NFS: Move the delegation return down into nfs4_proc_link()") Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/dir.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 7dee3fd10382..3f8e5122d004 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -2379,6 +2379,8 @@ nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
trace_nfs_link_enter(inode, dir, dentry);
d_drop(dentry);
+ if (S_ISREG(inode->i_mode))
+ nfs_sync_inode(inode);
error = NFS_PROTO(dir)->link(inode, dir, &dentry->d_name);
if (error == 0) {
nfs_set_verifier(dentry, nfs_save_change_attribute(dir));