Skip to content

Commit

Permalink
lookup_one_len_unlocked(): use lookup_dcache()
Browse files Browse the repository at this point in the history
No need to lock parent just because of ->d_revalidate() on child;
contrary to the stale comment, lookup_dcache() *can* be used without
locking the parent.  Result can be moved as soon as we return, of
course, but the same is true for lookup_one_len_unlocked() itself.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Mar 14, 2016
1 parent 74ff0ff commit d6d95de
Showing 1 changed file with 1 addition and 11 deletions.
12 changes: 1 addition & 11 deletions fs/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -1444,8 +1444,6 @@ static int follow_dotdot(struct nameidata *nd)
* This looks up the name in dcache, possibly revalidates the old dentry and
* allocates a new one if not found or not valid. In the need_lookup argument
* returns whether i_op->lookup is necessary.
*
* dir->d_inode->i_mutex must be held
*/
static struct dentry *lookup_dcache(struct qstr *name, struct dentry *dir,
unsigned int flags)
Expand Down Expand Up @@ -2351,15 +2349,7 @@ struct dentry *lookup_one_len_unlocked(const char *name,
if (err)
return ERR_PTR(err);

/*
* __d_lookup() is used to try to get a quick answer and avoid the
* mutex. A false-negative does no harm.
*/
ret = __d_lookup(base, &this);
if (ret && unlikely(ret->d_flags & DCACHE_OP_REVALIDATE)) {
dput(ret);
ret = NULL;
}
ret = lookup_dcache(&this, base, 0);
if (ret)
return ret;

Expand Down

0 comments on commit d6d95de

Please sign in to comment.