Commit b8e12e35 authored by Andreas Gruenbacher's avatar Andreas Gruenbacher
Browse files

gfs2: gfs2_inode_lookup cleanup



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: default avatarAndreas Gruenbacher <agruenba@redhat.com>
parent e11b02df
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -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: