Commit 6ca0a6f8 authored by Trond Myklebust's avatar Trond Myklebust

NFS: Fix case insensitive renames

For filesystems that are case insensitive and case preserving, we need
to be able to rename from one case folded variant of the filename to
another.
Currently, if we have looked up the target filename before the call to
rename, then we may have a hashed dentry with that target name in the
dcache, causing the vfs to optimise away the rename.
To avoid that, let's drop the target dentry, and leave it to the server
to optimise away the rename if that is the correct thing to do.
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 431794e6
......@@ -1739,6 +1739,10 @@ nfs_do_lookup_revalidate(struct inode *dir, struct dentry *dentry,
goto out_bad;
}
if ((flags & LOOKUP_RENAME_TARGET) && d_count(dentry) < 2 &&
nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE))
goto out_bad;
if (nfs_verifier_is_delegated(dentry))
return nfs_lookup_revalidate_delegated(dir, dentry, inode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment