Btrfs: use helper for logical resolve
authorLiu Bo <bo.li.liu@oracle.com>
Sat, 8 Sep 2012 02:01:29 +0000 (20:01 -0600)
committerChris Mason <chris.mason@fusionio.com>
Mon, 1 Oct 2012 19:19:18 +0000 (15:19 -0400)
We already have a helper, iterate_inodes_from_logical(), for logical resolve,
so just use it.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
fs/btrfs/ioctl.c

index 48ff3f7..fa1284d 100644 (file)
@@ -3210,12 +3210,9 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_root *root,
 {
        int ret = 0;
        int size;
-       u64 extent_item_pos;
-       u64 flags = 0;
        struct btrfs_ioctl_logical_ino_args *loi;
        struct btrfs_data_container *inodes = NULL;
        struct btrfs_path *path = NULL;
-       struct btrfs_key key;
 
        if (!capable(CAP_SYS_ADMIN))
                return -EPERM;
@@ -3241,23 +3238,13 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_root *root,
                goto out;
        }
 
-       ret = extent_from_logical(root->fs_info, loi->logical, path, &key,
-                                 &flags);
-       btrfs_release_path(path);
-
-       if (flags & BTRFS_EXTENT_FLAG_TREE_BLOCK)
+       ret = iterate_inodes_from_logical(loi->logical, root->fs_info, path,
+                                         build_ino_list, inodes);
+       if (ret == -EINVAL)
                ret = -ENOENT;
        if (ret < 0)
                goto out;
 
-       extent_item_pos = loi->logical - key.objectid;
-       ret = iterate_extent_inodes(root->fs_info, key.objectid,
-                                       extent_item_pos, 0, build_ino_list,
-                                       inodes);
-
-       if (ret < 0)
-               goto out;
-
        ret = copy_to_user((void *)(unsigned long)loi->inodes,
                           (void *)(unsigned long)inodes, size);
        if (ret)