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.

Signed-off-by: Qu Wenruo <w...@suse.com>
Reviewed-by: Nikolay Borisov <nbori...@suse.com>
Reviewed-by: Johannes Thumshirn <jthumsh...@suse.de>
---
 fs/btrfs/extent-tree.c | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 9f012c2facbe..606187ede47b 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -3252,10 +3252,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;
@@ -3267,11 +3263,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
@@ -3293,16 +3284,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;
                }
-- 
2.20.1

Reply via email to