Btrfs: use helper for logical resolve
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>
This commit is contained in:
parent
69917e4312
commit
df031f0752
@ -3210,12 +3210,9 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_root *root,
|
|||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int size;
|
int size;
|
||||||
u64 extent_item_pos;
|
|
||||||
u64 flags = 0;
|
|
||||||
struct btrfs_ioctl_logical_ino_args *loi;
|
struct btrfs_ioctl_logical_ino_args *loi;
|
||||||
struct btrfs_data_container *inodes = NULL;
|
struct btrfs_data_container *inodes = NULL;
|
||||||
struct btrfs_path *path = NULL;
|
struct btrfs_path *path = NULL;
|
||||||
struct btrfs_key key;
|
|
||||||
|
|
||||||
if (!capable(CAP_SYS_ADMIN))
|
if (!capable(CAP_SYS_ADMIN))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
@ -3241,23 +3238,13 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_root *root,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = extent_from_logical(root->fs_info, loi->logical, path, &key,
|
ret = iterate_inodes_from_logical(loi->logical, root->fs_info, path,
|
||||||
&flags);
|
build_ino_list, inodes);
|
||||||
btrfs_release_path(path);
|
if (ret == -EINVAL)
|
||||||
|
|
||||||
if (flags & BTRFS_EXTENT_FLAG_TREE_BLOCK)
|
|
||||||
ret = -ENOENT;
|
ret = -ENOENT;
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
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,
|
ret = copy_to_user((void *)(unsigned long)loi->inodes,
|
||||||
(void *)(unsigned long)inodes, size);
|
(void *)(unsigned long)inodes, size);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user