aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs')
-rw-r--r--fs/xfs/xfs_vnodeops.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
index 7093d749589b..637fc1a2bb44 100644
--- a/fs/xfs/xfs_vnodeops.c
+++ b/fs/xfs/xfs_vnodeops.c
@@ -1636,8 +1636,7 @@ xfs_lookup(
1636 struct xfs_name *name, 1636 struct xfs_name *name,
1637 xfs_inode_t **ipp) 1637 xfs_inode_t **ipp)
1638{ 1638{
1639 xfs_inode_t *ip; 1639 xfs_ino_t inum;
1640 xfs_ino_t e_inum;
1641 int error; 1640 int error;
1642 uint lock_mode; 1641 uint lock_mode;
1643 1642
@@ -1647,12 +1646,21 @@ xfs_lookup(
1647 return XFS_ERROR(EIO); 1646 return XFS_ERROR(EIO);
1648 1647
1649 lock_mode = xfs_ilock_map_shared(dp); 1648 lock_mode = xfs_ilock_map_shared(dp);
1650 error = xfs_dir_lookup_int(dp, lock_mode, name, &e_inum, &ip); 1649 error = xfs_dir_lookup(NULL, dp, name, &inum);
1651 if (!error) {
1652 *ipp = ip;
1653 xfs_itrace_ref(ip);
1654 }
1655 xfs_iunlock_map_shared(dp, lock_mode); 1650 xfs_iunlock_map_shared(dp, lock_mode);
1651
1652 if (error)
1653 goto out;
1654
1655 error = xfs_iget(dp->i_mount, NULL, inum, 0, 0, ipp, 0);
1656 if (error)
1657 goto out;
1658
1659 xfs_itrace_ref(*ipp);
1660 return 0;
1661
1662 out:
1663 *ipp = NULL;
1656 return error; 1664 return error;
1657} 1665}
1658 1666