staging: lustre: llite: remove directory-specific code from ll_find_alias()
authorNeilBrown <neilb@suse.com>
Mon, 12 Feb 2018 21:30:48 +0000 (08:30 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Feb 2018 14:15:07 +0000 (15:15 +0100)
Now that ll_find_alias() is never called for directories,
we can remove code that only applies to directories.

Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/llite/namei.c

index 60fb18f83bf85da1315087d309448daa28c9d0a2..2322328155d695f146d1a5069f55ee7e78a34735 100644 (file)
@@ -380,21 +380,15 @@ void ll_i2gids(__u32 *suppgids, struct inode *i1, struct inode *i2)
 }
 
 /*
- * try to reuse three types of dentry:
- * 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.
+ * Try to reuse unhashed or invalidated dentries.
  */
 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))
                return NULL;
 
-       discon_alias = NULL;
        invalid_alias = NULL;
 
        spin_lock(&inode->i_lock);
@@ -402,22 +396,18 @@ static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry)
                LASSERT(alias != dentry);
 
                spin_lock(&alias->d_lock);
-               if ((alias->d_flags & DCACHE_DISCONNECTED) &&
-                   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.len == dentry->d_name.len         &&
-                        memcmp(alias->d_name.name, dentry->d_name.name,
-                               dentry->d_name.len) == 0)
+               if (alias->d_parent == dentry->d_parent      &&
+                   alias->d_name.hash == dentry->d_name.hash       &&
+                   alias->d_name.len == dentry->d_name.len      &&
+                   memcmp(alias->d_name.name, dentry->d_name.name,
+                          dentry->d_name.len) == 0)
                        invalid_alias = alias;
                spin_unlock(&alias->d_lock);
 
                if (invalid_alias)
                        break;
        }
-       alias = invalid_alias ?: discon_alias ?: NULL;
+       alias = invalid_alias ?: NULL;
        if (alias) {
                spin_lock(&alias->d_lock);
                dget_dlock(alias);