[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: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:
Christoph Hellwig 2008-04-22 17:33:52 +10:00 committed by Lachlan McIlroy
parent d4377d8418
commit eca450b7c2

View File

@ -1636,8 +1636,7 @@ xfs_lookup(
struct xfs_name *name, struct xfs_name *name,
xfs_inode_t **ipp) xfs_inode_t **ipp)
{ {
xfs_inode_t *ip; xfs_ino_t inum;
xfs_ino_t e_inum;
int error; int error;
uint lock_mode; uint lock_mode;
@ -1647,12 +1646,21 @@ xfs_lookup(
return XFS_ERROR(EIO); return XFS_ERROR(EIO);
lock_mode = xfs_ilock_map_shared(dp); lock_mode = xfs_ilock_map_shared(dp);
error = xfs_dir_lookup_int(dp, lock_mode, name, &e_inum, &ip); error = xfs_dir_lookup(NULL, dp, name, &inum);
if (!error) {
*ipp = ip;
xfs_itrace_ref(ip);
}
xfs_iunlock_map_shared(dp, lock_mode); 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; return error;
} }