mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 17:12:06 +00:00
[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:
parent
d4377d8418
commit
eca450b7c2
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user