ocfs2: use list_for_each_entry in ocfs2_find_local_alias()
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 9 Jun 2012 17:09:15 +0000 (13:09 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 14 Jul 2012 12:32:53 +0000 (16:32 +0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/ocfs2/dcache.c

index e5ba348..a40edc1 100644 (file)
@@ -170,13 +170,10 @@ struct dentry *ocfs2_find_local_alias(struct inode *inode,
                                      u64 parent_blkno,
                                      int skip_unhashed)
 {
-       struct list_head *p;
-       struct dentry *dentry = NULL;
+       struct dentry *dentry;
 
        spin_lock(&inode->i_lock);
-       list_for_each(p, &inode->i_dentry) {
-               dentry = list_entry(p, struct dentry, d_alias);
-
+       list_for_each_entry(dentry, &inode->i_dentry, d_alias) {
                spin_lock(&dentry->d_lock);
                if (ocfs2_match_dentry(dentry, parent_blkno, skip_unhashed)) {
                        trace_ocfs2_find_local_alias(dentry->d_name.len,
@@ -184,16 +181,13 @@ struct dentry *ocfs2_find_local_alias(struct inode *inode,
 
                        dget_dlock(dentry);
                        spin_unlock(&dentry->d_lock);
-                       break;
+                       spin_unlock(&inode->i_lock);
+                       return dentry;
                }
                spin_unlock(&dentry->d_lock);
-
-               dentry = NULL;
        }
-
        spin_unlock(&inode->i_lock);
-
-       return dentry;
+       return NULL;
 }
 
 DEFINE_SPINLOCK(dentry_attach_lock);