Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eca450b7 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Lachlan McIlroy
Browse files

[XFS] simplify xfs_lookup



Opencode xfs-kill-xfs_dir_lookup_int here, which gets rid of a lock
roundtrip, and lots of stack space. Also kill the di_mode == 0 check that
has been done in xfs_iget for a few years now.

SGI-PV: 976035
SGI-Modid: xfs-linux-melb:xfs-kern:30901a

Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarLachlan McIlroy <lachlan@sgi.com>
parent d4377d84
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -1636,8 +1636,7 @@ xfs_lookup(
	struct xfs_name		*name,
	xfs_inode_t		**ipp)
{
	xfs_inode_t		*ip;
	xfs_ino_t		e_inum;
	xfs_ino_t		inum;
	int			error;
	uint			lock_mode;

@@ -1647,12 +1646,21 @@ xfs_lookup(
		return XFS_ERROR(EIO);

	lock_mode = xfs_ilock_map_shared(dp);
	error = xfs_dir_lookup_int(dp, lock_mode, name, &e_inum, &ip);
	if (!error) {
		*ipp = ip;
		xfs_itrace_ref(ip);
	}
	error = xfs_dir_lookup(NULL, dp, name, &inum);
	xfs_iunlock_map_shared(dp, lock_mode);

	if (error)
		goto out;

	error = xfs_iget(dp->i_mount, NULL, inum, 0, 0, ipp, 0);
	if (error)
		goto out;

	xfs_itrace_ref(*ipp);
	return 0;

 out:
	*ipp = NULL;
	return error;
}