]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
NFS: Ensure the server has an up to date ctime before renaming
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 15 Dec 2021 21:38:16 +0000 (16:38 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 1 Feb 2022 16:24:38 +0000 (17:24 +0100)
[ 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>
fs/nfs/dir.c

index 54a6893b0299f392bc1fb6f68c0d42490aff3dea..f1c99fe486c4d32fee9a82f078cff48327a30643 100644 (file)
@@ -2143,6 +2143,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);