btrfs: don't use set/get token in leaf_space_used
authorDavid Sterba <dsterba@suse.com>
Wed, 29 Apr 2020 20:56:01 +0000 (22:56 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 25 May 2020 09:25:32 +0000 (11:25 +0200)
The token is supposed to cache the last page used by the set/get
helpers. In leaf_space_used the first and last items are accessed, it's
not likely they'd be on the same page so there's some overhead caused
updating the token address but not using it.

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

index 576111cdea1d17e51e77df926d429a429ea2daba..6dbeb23c59ecb58619c18d4cd4260052858d30de 100644 (file)
@@ -3507,19 +3507,17 @@ static int leaf_space_used(struct extent_buffer *l, int start, int nr)
 {
        struct btrfs_item *start_item;
        struct btrfs_item *end_item;
-       struct btrfs_map_token token;
        int data_len;
        int nritems = btrfs_header_nritems(l);
        int end = min(nritems, start + nr) - 1;
 
        if (!nr)
                return 0;
-       btrfs_init_map_token(&token, l);
        start_item = btrfs_item_nr(start);
        end_item = btrfs_item_nr(end);
-       data_len = btrfs_token_item_offset(&token, start_item) +
-               btrfs_token_item_size(&token, start_item);
-       data_len = data_len - btrfs_token_item_offset(&token, end_item);
+       data_len = btrfs_item_offset(l, start_item) +
+                  btrfs_item_size(l, start_item);
+       data_len = data_len - btrfs_item_offset(l, end_item);
        data_len += sizeof(struct btrfs_item) * nr;
        WARN_ON(data_len < 0);
        return data_len;