]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: sink iterator parameter to btrfs_ioctl_logical_to_ino
authorDavid Sterba <dsterba@suse.com>
Mon, 6 Jun 2022 17:32:59 +0000 (19:32 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Dec 2022 10:23:53 +0000 (11:23 +0100)
[ Upstream commit e3059ec06b9f1a96826cc2bb6ed131aac0942446 ]

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>
Stable-dep-of: 418ffb9e3cf6 ("btrfs: free btrfs_path before copying inodes to userspace")
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/btrfs/backref.c
fs/btrfs/backref.h
fs/btrfs/ioctl.c

index 6942707f8b034b6f380ddeb07a97407e9701f962..7208ba22e734ae8f6be27eabe423ad04f7830934 100644 (file)
@@ -2060,10 +2060,29 @@ out:
        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,
                                struct btrfs_path *path,
-                               iterate_extent_inodes_t *iterate, void *ctx,
-                               bool ignore_offset)
+                               void *ctx, bool ignore_offset)
 {
        int ret;
        u64 extent_item_pos;
@@ -2081,7 +2100,7 @@ int iterate_inodes_from_logical(u64 logical, struct btrfs_fs_info *fs_info,
        extent_item_pos = logical - found_key.objectid;
        ret = iterate_extent_inodes(fs_info, found_key.objectid,
                                        extent_item_pos, search_commit_root,
-                                       iterate, ctx, ignore_offset);
+                                       build_ino_list, ctx, ignore_offset);
 
        return ret;
 }
index 17abde7f794ce37d7f817decf34577fd90885cc9..6ed18b807b6400b8e6101cabfc36aa09b56fed7d 100644 (file)
@@ -35,8 +35,7 @@ int iterate_extent_inodes(struct btrfs_fs_info *fs_info,
                                bool ignore_offset);
 
 int iterate_inodes_from_logical(u64 logical, struct btrfs_fs_info *fs_info,
-                               struct btrfs_path *path,
-                               iterate_extent_inodes_t *iterate, void *ctx,
+                               struct btrfs_path *path, void *ctx,
                                bool ignore_offset);
 
 int paths_from_inode(u64 inum, struct inode_fs_paths *ipath);
index d0c31651ec80db695fbd7ca846bc078a5e4f95f3..58fe58b929d2007244b5ba106b1f3d441d151d2d 100644 (file)
@@ -3898,26 +3898,6 @@ out:
        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,
                                        void __user *arg, int version)
 {
@@ -3967,7 +3947,7 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_fs_info *fs_info,
        }
 
        ret = iterate_inodes_from_logical(loi->logical, fs_info, path,
-                                         build_ino_list, inodes, ignore_offset);
+                                         inodes, ignore_offset);
        if (ret == -EINVAL)
                ret = -ENOENT;
        if (ret < 0)