summaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@hammerspace.com>2021-12-15 16:38:15 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-02-08 18:23:10 +0100
commitddeea0002d17984d66bb63f9b66b96fd604756ad (patch)
tree2112c5dffc2eb184ecefdf06cc7c491126d754e6 /fs/nfs
parent243e898452adcf6055c9b2632becef7c59f02874 (diff)
downloadlinux-stable-ddeea0002d17984d66bb63f9b66b96fd604756ad.tar.gz
linux-stable-ddeea0002d17984d66bb63f9b66b96fd604756ad.tar.bz2
linux-stable-ddeea0002d17984d66bb63f9b66b96fd604756ad.zip
NFS: Ensure the server has an up to date ctime before hardlinking
[ Upstream commit 204975036b34f55237bc44c8a302a88468ef21b5 ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
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 f2ea5c244531..e470df394f3a 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -2033,6 +2033,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) {
ihold(inode);