Commit 9f6d44d4 authored by Trond Myklebust's avatar Trond Myklebust

NFS: Optimise away lookups for rename targets

We can optimise away any lookup for a rename target, unless we're
being asked to revalidate a dentry that might be in use.
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 73dd684a
...@@ -1051,13 +1051,15 @@ int nfs_lookup_verify_inode(struct inode *inode, unsigned int flags) ...@@ -1051,13 +1051,15 @@ int nfs_lookup_verify_inode(struct inode *inode, unsigned int flags)
* *
* If LOOKUP_RCU prevents us from performing a full check, return 1 * If LOOKUP_RCU prevents us from performing a full check, return 1
* suggesting a reval is needed. * suggesting a reval is needed.
*
* Note that when creating a new file, or looking up a rename target,
* then it shouldn't be necessary to revalidate a negative dentry.
*/ */
static inline static inline
int nfs_neg_need_reval(struct inode *dir, struct dentry *dentry, int nfs_neg_need_reval(struct inode *dir, struct dentry *dentry,
unsigned int flags) unsigned int flags)
{ {
/* Don't revalidate a negative dentry if we're creating a new file */ if (flags & (LOOKUP_CREATE | LOOKUP_RENAME_TARGET))
if (flags & LOOKUP_CREATE)
return 0; return 0;
if (NFS_SERVER(dir)->flags & NFS_MOUNT_LOOKUP_CACHE_NONEG) if (NFS_SERVER(dir)->flags & NFS_MOUNT_LOOKUP_CACHE_NONEG)
return 1; return 1;
...@@ -1347,7 +1349,7 @@ struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned in ...@@ -1347,7 +1349,7 @@ struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned in
* If we're doing an exclusive create, optimize away the lookup * If we're doing an exclusive create, optimize away the lookup
* but don't hash the dentry. * but don't hash the dentry.
*/ */
if (nfs_is_exclusive_create(dir, flags)) if (nfs_is_exclusive_create(dir, flags) || flags & LOOKUP_RENAME_TARGET)
return NULL; return NULL;
res = ERR_PTR(-ENOMEM); res = ERR_PTR(-ENOMEM);
......
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