]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
gfs2: gfs2_inode_lookup cleanup
authorAndreas Gruenbacher <agruenba@redhat.com>
Mon, 29 Nov 2021 02:35:00 +0000 (03:35 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Thu, 2 Dec 2021 11:41:09 +0000 (12:41 +0100)
In gfs2_inode_lookup, once the inode has been looked up, we check if the
inode generation (no_formal_ino) is the one we're looking for.  If it
isn't and the inode wasn't in the inode cache, we discard the newly
looked up inode.  This is unnecessary, complicates the code, and makes
future changes to gfs2_inode_lookup harder, so change the code to retain
newly looked up inodes instead.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/inode.c

index 6424b903e88515f191bc21b7f4b72cd51c0a70f6..806357f0c7eeca44c1315da15f4ef906a0eae9a4 100644 (file)
@@ -208,20 +208,15 @@ struct inode *gfs2_inode_lookup(struct super_block *sb, unsigned int type,
                        gfs2_glock_dq_uninit(&i_gh);
 
                gfs2_set_iop(inode);
+               unlock_new_inode(inode);
        }
 
        if (no_formal_ino && ip->i_no_formal_ino &&
            no_formal_ino != ip->i_no_formal_ino) {
-               error = -ESTALE;
-               if (inode->i_state & I_NEW)
-                       goto fail;
                iput(inode);
-               return ERR_PTR(error);
+               return ERR_PTR(-ESTALE);
        }
 
-       if (inode->i_state & I_NEW)
-               unlock_new_inode(inode);
-
        return inode;
 
 fail: