Skip to content

Commit

Permalink
btrfs: extent-tree: Open-code process_func in __btrfs_mod_ref
Browse files Browse the repository at this point in the history
The process_func function pointer is local to __btrfs_mod_ref() and
points to either btrfs_inc_extent_ref() or btrfs_free_extent().

Open code it to make later delayed ref refactor easier, so we can
refactor btrfs_inc_extent_ref() and btrfs_free_extent() in different
patches.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
  • Loading branch information
Qu Wenruo authored and David Sterba committed Apr 29, 2019
1 parent b28b1f0 commit dd28b6a
Showing 1 changed file with 16 additions and 14 deletions.
30 changes: 16 additions & 14 deletions fs/btrfs/extent-tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -3157,10 +3157,6 @@ static int __btrfs_mod_ref(struct btrfs_trans_handle *trans,
int i;
int level;
int ret = 0;
int (*process_func)(struct btrfs_trans_handle *,
struct btrfs_root *,
u64, u64, u64, u64, u64, u64);


if (btrfs_is_testing(fs_info))
return 0;
Expand All @@ -3172,11 +3168,6 @@ static int __btrfs_mod_ref(struct btrfs_trans_handle *trans,
if (!test_bit(BTRFS_ROOT_REF_COWS, &root->state) && level == 0)
return 0;

if (inc)
process_func = btrfs_inc_extent_ref;
else
process_func = btrfs_free_extent;

if (full_backref)
parent = buf->start;
else
Expand All @@ -3198,16 +3189,27 @@ static int __btrfs_mod_ref(struct btrfs_trans_handle *trans,

num_bytes = btrfs_file_extent_disk_num_bytes(buf, fi);
key.offset -= btrfs_file_extent_offset(buf, fi);
ret = process_func(trans, root, bytenr, num_bytes,
parent, ref_root, key.objectid,
key.offset);
if (inc)
ret = btrfs_inc_extent_ref(trans, root, bytenr,
num_bytes, parent, ref_root,
key.objectid, key.offset);
else
ret = btrfs_free_extent(trans, root, bytenr,
num_bytes, parent, ref_root,
key.objectid, key.offset);
if (ret)
goto fail;
} else {
bytenr = btrfs_node_blockptr(buf, i);
num_bytes = fs_info->nodesize;
ret = process_func(trans, root, bytenr, num_bytes,
parent, ref_root, level - 1, 0);
if (inc)
ret = btrfs_inc_extent_ref(trans, root, bytenr,
num_bytes, parent, ref_root,
level - 1, 0);
else
ret = btrfs_free_extent(trans, root, bytenr,
num_bytes, parent, ref_root,
level - 1, 0);
if (ret)
goto fail;
}
Expand Down

0 comments on commit dd28b6a

Please sign in to comment.