btrfs: sink iterator parameter to btrfs_ioctl_logical_to_ino
There's only one function we pass to iterate_inodes_from_logical as iterator, so we can drop the indirection and call it directly, after moving the function to backref.c Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
875d1daa7b
commit
e3059ec06b
@ -2028,10 +2028,29 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int build_ino_list(u64 inum, u64 offset, u64 root, void *ctx)
|
||||||
|
{
|
||||||
|
struct btrfs_data_container *inodes = ctx;
|
||||||
|
const size_t c = 3 * sizeof(u64);
|
||||||
|
|
||||||
|
if (inodes->bytes_left >= c) {
|
||||||
|
inodes->bytes_left -= c;
|
||||||
|
inodes->val[inodes->elem_cnt] = inum;
|
||||||
|
inodes->val[inodes->elem_cnt + 1] = offset;
|
||||||
|
inodes->val[inodes->elem_cnt + 2] = root;
|
||||||
|
inodes->elem_cnt += 3;
|
||||||
|
} else {
|
||||||
|
inodes->bytes_missing += c - inodes->bytes_left;
|
||||||
|
inodes->bytes_left = 0;
|
||||||
|
inodes->elem_missed += 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int iterate_inodes_from_logical(u64 logical, struct btrfs_fs_info *fs_info,
|
int iterate_inodes_from_logical(u64 logical, struct btrfs_fs_info *fs_info,
|
||||||
struct btrfs_path *path,
|
struct btrfs_path *path,
|
||||||
iterate_extent_inodes_t *iterate, void *ctx,
|
void *ctx, bool ignore_offset)
|
||||||
bool ignore_offset)
|
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
u64 extent_item_pos;
|
u64 extent_item_pos;
|
||||||
@ -2049,7 +2068,7 @@ int iterate_inodes_from_logical(u64 logical, struct btrfs_fs_info *fs_info,
|
|||||||
extent_item_pos = logical - found_key.objectid;
|
extent_item_pos = logical - found_key.objectid;
|
||||||
ret = iterate_extent_inodes(fs_info, found_key.objectid,
|
ret = iterate_extent_inodes(fs_info, found_key.objectid,
|
||||||
extent_item_pos, search_commit_root,
|
extent_item_pos, search_commit_root,
|
||||||
iterate, ctx, ignore_offset);
|
build_ino_list, ctx, ignore_offset);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,7 @@ int iterate_extent_inodes(struct btrfs_fs_info *fs_info,
|
|||||||
bool ignore_offset);
|
bool ignore_offset);
|
||||||
|
|
||||||
int iterate_inodes_from_logical(u64 logical, struct btrfs_fs_info *fs_info,
|
int iterate_inodes_from_logical(u64 logical, struct btrfs_fs_info *fs_info,
|
||||||
struct btrfs_path *path,
|
struct btrfs_path *path, void *ctx,
|
||||||
iterate_extent_inodes_t *iterate, void *ctx,
|
|
||||||
bool ignore_offset);
|
bool ignore_offset);
|
||||||
|
|
||||||
int paths_from_inode(u64 inum, struct inode_fs_paths *ipath);
|
int paths_from_inode(u64 inum, struct inode_fs_paths *ipath);
|
||||||
|
@ -4243,26 +4243,6 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int build_ino_list(u64 inum, u64 offset, u64 root, void *ctx)
|
|
||||||
{
|
|
||||||
struct btrfs_data_container *inodes = ctx;
|
|
||||||
const size_t c = 3 * sizeof(u64);
|
|
||||||
|
|
||||||
if (inodes->bytes_left >= c) {
|
|
||||||
inodes->bytes_left -= c;
|
|
||||||
inodes->val[inodes->elem_cnt] = inum;
|
|
||||||
inodes->val[inodes->elem_cnt + 1] = offset;
|
|
||||||
inodes->val[inodes->elem_cnt + 2] = root;
|
|
||||||
inodes->elem_cnt += 3;
|
|
||||||
} else {
|
|
||||||
inodes->bytes_missing += c - inodes->bytes_left;
|
|
||||||
inodes->bytes_left = 0;
|
|
||||||
inodes->elem_missed += 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static long btrfs_ioctl_logical_to_ino(struct btrfs_fs_info *fs_info,
|
static long btrfs_ioctl_logical_to_ino(struct btrfs_fs_info *fs_info,
|
||||||
void __user *arg, int version)
|
void __user *arg, int version)
|
||||||
{
|
{
|
||||||
@ -4312,7 +4292,7 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_fs_info *fs_info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret = iterate_inodes_from_logical(loi->logical, fs_info, path,
|
ret = iterate_inodes_from_logical(loi->logical, fs_info, path,
|
||||||
build_ino_list, inodes, ignore_offset);
|
inodes, ignore_offset);
|
||||||
if (ret == -EINVAL)
|
if (ret == -EINVAL)
|
||||||
ret = -ENOENT;
|
ret = -ENOENT;
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user