summaryrefslogtreecommitdiffstats
path: root/fs/nfs
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-08 18:23:10 +0100
commit8b5c9de150c62f686ff274039b97fe3a2297ada6 (patch)
treecb03ae3a1de0b579df487ef4e6c182522827585b /fs/nfs
parentddeea0002d17984d66bb63f9b66b96fd604756ad (diff)
downloadlinux-stable-8b5c9de150c62f686ff274039b97fe3a2297ada6.tar.gz
linux-stable-8b5c9de150c62f686ff274039b97fe3a2297ada6.tar.bz2
linux-stable-8b5c9de150c62f686ff274039b97fe3a2297ada6.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>
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 e470df394f3a..a968b8b4b982 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -2123,6 +2123,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);