Commit ac637746 authored by NeilBrown's avatar NeilBrown Committed by Greg Kroah-Hartman

staging: lustre: llite: remove directory-specific code from ll_find_alias()

Now that ll_find_alias() is never called for directories,
we can remove code that only applies to directories.
Signed-off-by: default avatarNeilBrown <neilb@suse.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e9d4f0b9
...@@ -380,21 +380,15 @@ void ll_i2gids(__u32 *suppgids, struct inode *i1, struct inode *i2) ...@@ -380,21 +380,15 @@ void ll_i2gids(__u32 *suppgids, struct inode *i1, struct inode *i2)
} }
/* /*
* try to reuse three types of dentry: * Try to reuse unhashed or invalidated dentries.
* 1. unhashed alias, this one is unhashed by d_invalidate (but it may be valid
* by concurrent .revalidate).
* 2. INVALID alias (common case for no valid ldlm lock held, but this flag may
* be cleared by others calling d_lustre_revalidate).
* 3. DISCONNECTED alias.
*/ */
static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry) static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry)
{ {
struct dentry *alias, *discon_alias, *invalid_alias; struct dentry *alias, *invalid_alias;
if (hlist_empty(&inode->i_dentry)) if (hlist_empty(&inode->i_dentry))
return NULL; return NULL;
discon_alias = NULL;
invalid_alias = NULL; invalid_alias = NULL;
spin_lock(&inode->i_lock); spin_lock(&inode->i_lock);
...@@ -402,11 +396,7 @@ static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry) ...@@ -402,11 +396,7 @@ static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry)
LASSERT(alias != dentry); LASSERT(alias != dentry);
spin_lock(&alias->d_lock); spin_lock(&alias->d_lock);
if ((alias->d_flags & DCACHE_DISCONNECTED) && if (alias->d_parent == dentry->d_parent &&
S_ISDIR(inode->i_mode))
/* LASSERT(last_discon == NULL); LU-405, bz 20055 */
discon_alias = alias;
else if (alias->d_parent == dentry->d_parent &&
alias->d_name.hash == dentry->d_name.hash && alias->d_name.hash == dentry->d_name.hash &&
alias->d_name.len == dentry->d_name.len && alias->d_name.len == dentry->d_name.len &&
memcmp(alias->d_name.name, dentry->d_name.name, memcmp(alias->d_name.name, dentry->d_name.name,
...@@ -417,7 +407,7 @@ static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry) ...@@ -417,7 +407,7 @@ static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry)
if (invalid_alias) if (invalid_alias)
break; break;
} }
alias = invalid_alias ?: discon_alias ?: NULL; alias = invalid_alias ?: NULL;
if (alias) { if (alias) {
spin_lock(&alias->d_lock); spin_lock(&alias->d_lock);
dget_dlock(alias); dget_dlock(alias);
......
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