]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/xfs/xfs_vnodeops.c
[XFS] simplify xfs_lookup
[linux-2.6-omap-h63xx.git] / fs / xfs / xfs_vnodeops.c
index 7093d749589b4931b3d691c4c117a27db5ad6a06..637fc1a2bb44f51c49e78517194329a782517eed 100644 (file)
@@ -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;
 }