btrfs: extent-tree: Open-code process_func in __btrfs_mod_ref
authorQu Wenruo <wqu@suse.com>
Thu, 4 Apr 2019 06:45:30 +0000 (14:45 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 29 Apr 2019 17:02:48 +0000 (19:02 +0200)
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

index 21c9d4a482e0c89bbd7c19ac1acb7f637451bfe0..cd33b89418ddb8e52dad7f93218106460857da96 100644 (file)
@@ -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;
@@ -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
@@ -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;
                }