summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@hammerspace.com>2021-12-15 16:38:16 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-02-01 17:25:45 +0100
commit7a32824f7a9c8e2571b2ff74493516fb894d8d06 (patch)
tree6b5fd813d2651a37387b4a6e3996c9c78d93cc79
parent666f6ab882ea1953e07ace36d022339beb8b3b34 (diff)
downloadlinux-stable-7a32824f7a9c8e2571b2ff74493516fb894d8d06.tar.gz
linux-stable-7a32824f7a9c8e2571b2ff74493516fb894d8d06.tar.bz2
linux-stable-7a32824f7a9c8e2571b2ff74493516fb894d8d06.zip
NFS: Ensure the server has an up to date ctime before renaming
[ Upstream commit 6ff9d99bb88faebf134ca668842349d9718e5464 ] Renaming a file 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: f2c2c552f119 ("NFS: Move delegation recall into the NFSv4 callback for rename_setup()") 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>
-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 d98386f398ab..a23b7a5dec9e 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -2282,6 +2282,8 @@ int nfs_rename(struct inode *old_dir, struct dentry *old_dentry,
}
}
+ if (S_ISREG(old_inode->i_mode))
+ nfs_sync_inode(old_inode);
task = nfs_async_rename(old_dir, new_dir, old_dentry, new_dentry, NULL);
if (IS_ERR(task)) {
error = PTR_ERR(task);