]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
NFS: Avoid flushing data while holding directory locks in nfs_rename()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sun, 27 Apr 2025 22:21:06 +0000 (18:21 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Jun 2025 12:45:10 +0000 (14:45 +0200)
commitb6b3d8aeab9e6e8384c71908ff46f0f3c5b997d9
tree48f308d2fd81a7ea0f1b7a262bc108d957cd3f2b
parente8fd089329f1e353d7b65894084596071c8a1263
NFS: Avoid flushing data while holding directory locks in nfs_rename()

[ Upstream commit dcd21b609d4abc7303f8683bce4f35d78d7d6830 ]

The Linux client assumes that all filehandles are non-volatile for
renames within the same directory (otherwise sillyrename cannot work).
However, the existence of the Linux 'subtree_check' export option has
meant that nfs_rename() has always assumed it needs to flush writes
before attempting to rename.

Since NFSv4 does allow the client to query whether or not the server
exhibits this behaviour, and since knfsd does actually set the
appropriate flag when 'subtree_check' is enabled on an export, it
should be OK to optimise away the write flushing behaviour in the cases
where it is clearly not needed.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/nfs/client.c
fs/nfs/dir.c
include/linux/nfs_fs_sb.h