From dd28b6a5aad306c417477db700ed0848c923a31c Mon Sep 17 00:00:00 2001
From: Qu Wenruo <wqu@suse.com>
Date: Thu, 4 Apr 2019 14:45:30 +0800
Git-commit: dd28b6a5aad306c417477db700ed0848c923a31c
References: bsc#1063638 bsc#1128052 bsc#1108838
Patch-mainline: v5.2-rc1
Subject: [PATCH 2/9] btrfs: extent-tree: Open-code process_func in
__btrfs_mod_ref
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>
---
fs/btrfs/extent-tree.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -3346,10 +3346,6 @@ static int __btrfs_mod_ref(struct btrfs_
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;
@@ -3361,11 +3357,6 @@ static int __btrfs_mod_ref(struct btrfs_
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
@@ -3387,7 +3378,12 @@ static int __btrfs_mod_ref(struct btrfs_
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,
+ 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)
@@ -3395,7 +3391,11 @@ static int __btrfs_mod_ref(struct btrfs_
} else {
bytenr = btrfs_node_blockptr(buf, i);
num_bytes = fs_info->nodesize;
- ret = process_func(trans, root, bytenr, num_bytes,
+ 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;