]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: don't use token set/get accessors for btrfs_item members
authorDavid Sterba <dsterba@suse.com>
Fri, 27 Jun 2025 14:03:50 +0000 (16:03 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 21 Jul 2025 22:04:59 +0000 (00:04 +0200)
The token versions of set/get accessors will be removed, use the normal
helpers. The btrfs_item members use that interface the most but there
are no real benefits anymore.

This reduces stack consumption on x86_64 release config:

setup_items_for_insert                           -32 (144 -> 112)
__push_leaf_left                                 -32 (176 -> 144)
btrfs_extend_item                                -16 (104 -> 88)
copy_for_split                                   -32 (144 -> 112)
btrfs_del_items                                  -16 (144 -> 128)
btrfs_truncate_item                              -24 (152 -> 128)
__push_leaf_right                                -24 (168 -> 144)

and module size:

   text    data     bss     dec     hex filename
1463615  115665   16088 1595368  1857e8 pre/btrfs.ko
1463413  115665   16088 1595166  18571e post/btrfs.ko

DELTA: -202

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.c

index dc21e840664baeed680f0e797d002ec8e5710955..74e6d7f3d2660ed96b1f52312ed32716c9f3c372 100644 (file)
@@ -3110,7 +3110,6 @@ static noinline int __push_leaf_right(struct btrfs_trans_handle *trans,
        struct btrfs_fs_info *fs_info = right->fs_info;
        struct extent_buffer *left = path->nodes[0];
        struct extent_buffer *upper = path->nodes[1];
-       struct btrfs_map_token token;
        struct btrfs_disk_key disk_key;
        int slot;
        u32 i;
@@ -3184,13 +3183,12 @@ static noinline int __push_leaf_right(struct btrfs_trans_handle *trans,
        copy_leaf_items(right, left, 0, left_nritems - push_items, push_items);
 
        /* update the item pointers */
-       btrfs_init_map_token(&token, right);
        right_nritems += push_items;
        btrfs_set_header_nritems(right, right_nritems);
        push_space = BTRFS_LEAF_DATA_SIZE(fs_info);
        for (i = 0; i < right_nritems; i++) {
-               push_space -= btrfs_token_item_size(&token, i);
-               btrfs_set_token_item_offset(&token, i, push_space);
+               push_space -= btrfs_item_size(right, i);
+               btrfs_set_item_offset(right, i, push_space);
        }
 
        left_nritems -= push_items;
@@ -3333,7 +3331,6 @@ static noinline int __push_leaf_left(struct btrfs_trans_handle *trans,
        int ret = 0;
        u32 this_item_size;
        u32 old_left_item_size;
-       struct btrfs_map_token token;
 
        if (empty)
                nr = min(right_nritems, max_slot);
@@ -3381,13 +3378,12 @@ static noinline int __push_leaf_left(struct btrfs_trans_handle *trans,
        old_left_nritems = btrfs_header_nritems(left);
        BUG_ON(old_left_nritems <= 0);
 
-       btrfs_init_map_token(&token, left);
        old_left_item_size = btrfs_item_offset(left, old_left_nritems - 1);
        for (i = old_left_nritems; i < old_left_nritems + push_items; i++) {
                u32 ioff;
 
-               ioff = btrfs_token_item_offset(&token, i);
-               btrfs_set_token_item_offset(&token, i,
+               ioff = btrfs_item_offset(left, i);
+               btrfs_set_item_offset(left, i,
                      ioff - (BTRFS_LEAF_DATA_SIZE(fs_info) - old_left_item_size));
        }
        btrfs_set_header_nritems(left, old_left_nritems + push_items);
@@ -3408,13 +3404,12 @@ static noinline int __push_leaf_left(struct btrfs_trans_handle *trans,
                                   btrfs_header_nritems(right) - push_items);
        }
 
-       btrfs_init_map_token(&token, right);
        right_nritems -= push_items;
        btrfs_set_header_nritems(right, right_nritems);
        push_space = BTRFS_LEAF_DATA_SIZE(fs_info);
        for (i = 0; i < right_nritems; i++) {
-               push_space = push_space - btrfs_token_item_size(&token, i);
-               btrfs_set_token_item_offset(&token, i, push_space);
+               push_space = push_space - btrfs_item_size(right, i);
+               btrfs_set_item_offset(right, i, push_space);
        }
 
        btrfs_mark_buffer_dirty(trans, left);
@@ -3528,7 +3523,6 @@ static noinline int copy_for_split(struct btrfs_trans_handle *trans,
        int i;
        int ret;
        struct btrfs_disk_key disk_key;
-       struct btrfs_map_token token;
 
        nritems = nritems - mid;
        btrfs_set_header_nritems(right, nritems);
@@ -3541,12 +3535,11 @@ static noinline int copy_for_split(struct btrfs_trans_handle *trans,
 
        rt_data_off = BTRFS_LEAF_DATA_SIZE(fs_info) - btrfs_item_data_end(l, mid);
 
-       btrfs_init_map_token(&token, right);
        for (i = 0; i < nritems; i++) {
                u32 ioff;
 
-               ioff = btrfs_token_item_offset(&token, i);
-               btrfs_set_token_item_offset(&token, i, ioff + rt_data_off);
+               ioff = btrfs_item_offset(right, i);
+               btrfs_set_item_offset(right, i, ioff + rt_data_off);
        }
 
        btrfs_set_header_nritems(l, mid);
@@ -4012,7 +4005,6 @@ void btrfs_truncate_item(struct btrfs_trans_handle *trans,
        unsigned int old_size;
        unsigned int size_diff;
        int i;
-       struct btrfs_map_token token;
 
        leaf = path->nodes[0];
        slot = path->slots[0];
@@ -4035,12 +4027,11 @@ void btrfs_truncate_item(struct btrfs_trans_handle *trans,
         * item0..itemN ... dataN.offset..dataN.size .. data0.size
         */
        /* first correct the data pointers */
-       btrfs_init_map_token(&token, leaf);
        for (i = slot; i < nritems; i++) {
                u32 ioff;
 
-               ioff = btrfs_token_item_offset(&token, i);
-               btrfs_set_token_item_offset(&token, i, ioff + size_diff);
+               ioff = btrfs_item_offset(leaf, i);
+               btrfs_set_item_offset(leaf, i, ioff + size_diff);
        }
 
        /* shift the data */
@@ -4103,7 +4094,6 @@ void btrfs_extend_item(struct btrfs_trans_handle *trans,
        unsigned int old_data;
        unsigned int old_size;
        int i;
-       struct btrfs_map_token token;
 
        leaf = path->nodes[0];
 
@@ -4129,12 +4119,11 @@ void btrfs_extend_item(struct btrfs_trans_handle *trans,
         * item0..itemN ... dataN.offset..dataN.size .. data0.size
         */
        /* first correct the data pointers */
-       btrfs_init_map_token(&token, leaf);
        for (i = slot; i < nritems; i++) {
                u32 ioff;
 
-               ioff = btrfs_token_item_offset(&token, i);
-               btrfs_set_token_item_offset(&token, i, ioff - data_size);
+               ioff = btrfs_item_offset(leaf, i);
+               btrfs_set_item_offset(leaf, i, ioff - data_size);
        }
 
        /* shift the data */
@@ -4174,7 +4163,6 @@ static void setup_items_for_insert(struct btrfs_trans_handle *trans,
        struct btrfs_disk_key disk_key;
        struct extent_buffer *leaf;
        int slot;
-       struct btrfs_map_token token;
        u32 total_size;
 
        /*
@@ -4202,7 +4190,6 @@ static void setup_items_for_insert(struct btrfs_trans_handle *trans,
                BUG();
        }
 
-       btrfs_init_map_token(&token, leaf);
        if (slot != nritems) {
                unsigned int old_data = btrfs_item_data_end(leaf, slot);
 
@@ -4220,8 +4207,8 @@ static void setup_items_for_insert(struct btrfs_trans_handle *trans,
                for (i = slot; i < nritems; i++) {
                        u32 ioff;
 
-                       ioff = btrfs_token_item_offset(&token, i);
-                       btrfs_set_token_item_offset(&token, i,
+                       ioff = btrfs_item_offset(leaf, i);
+                       btrfs_set_item_offset(leaf, i,
                                                       ioff - batch->total_data_size);
                }
                /* shift the items */
@@ -4238,8 +4225,8 @@ static void setup_items_for_insert(struct btrfs_trans_handle *trans,
                btrfs_cpu_key_to_disk(&disk_key, &batch->keys[i]);
                btrfs_set_item_key(leaf, &disk_key, slot + i);
                data_end -= batch->data_sizes[i];
-               btrfs_set_token_item_offset(&token, slot + i, data_end);
-               btrfs_set_token_item_size(&token, slot + i, batch->data_sizes[i]);
+               btrfs_set_item_offset(leaf, slot + i, data_end);
+               btrfs_set_item_size(leaf, slot + i, batch->data_sizes[i]);
        }
 
        btrfs_set_header_nritems(leaf, nritems + batch->nr);
@@ -4479,7 +4466,6 @@ int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
        if (slot + nr != nritems) {
                const u32 last_off = btrfs_item_offset(leaf, slot + nr - 1);
                const int data_end = leaf_data_end(leaf);
-               struct btrfs_map_token token;
                u32 dsize = 0;
                int i;
 
@@ -4489,12 +4475,11 @@ int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
                memmove_leaf_data(leaf, data_end + dsize, data_end,
                                  last_off - data_end);
 
-               btrfs_init_map_token(&token, leaf);
                for (i = slot + nr; i < nritems; i++) {
                        u32 ioff;
 
-                       ioff = btrfs_token_item_offset(&token, i);
-                       btrfs_set_token_item_offset(&token, i, ioff + dsize);
+                       ioff = btrfs_item_offset(leaf, i);
+                       btrfs_set_item_offset(leaf, i, ioff + dsize);
                }
 
                memmove_leaf_items(leaf, slot, slot + nr, nritems - slot - nr);