]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: remove start field from struct btrfs_free_space_ctl
authorFilipe Manana <fdmanana@suse.com>
Wed, 15 Apr 2026 12:31:05 +0000 (13:31 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 8 Jun 2026 13:53:29 +0000 (15:53 +0200)
There's no need for the start field, we can take it from the block group.
This reduces the structure size from 152 bytes down to 144 bytes, so on
a 4K page system we can now fit 28 structures instead of 26.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/free-space-cache.c
fs/btrfs/free-space-cache.h

index 07567fd456347070b3b53e171b4436e26ddc43ba..af557a581e2cf5394998d65ebd034b3a1e77b4b4 100644 (file)
@@ -1568,10 +1568,10 @@ static inline u64 offset_to_bitmap(struct btrfs_free_space_ctl *ctl,
        u64 bytes_per_bitmap;
 
        bytes_per_bitmap = BITS_PER_BITMAP * ctl->unit;
-       bitmap_start = offset - ctl->start;
+       bitmap_start = offset - ctl->block_group->start;
        bitmap_start = div64_u64(bitmap_start, bytes_per_bitmap);
        bitmap_start *= bytes_per_bitmap;
-       bitmap_start += ctl->start;
+       bitmap_start += ctl->block_group->start;
 
        return bitmap_start;
 }
@@ -2050,9 +2050,9 @@ again:
                 * to match our requested alignment
                 */
                if (*bytes >= align) {
-                       tmp = entry->offset - ctl->start + align - 1;
+                       tmp = entry->offset - ctl->block_group->start + align - 1;
                        tmp = div64_u64(tmp, align);
-                       tmp = tmp * align + ctl->start;
+                       tmp = tmp * align + ctl->block_group->start;
                        align_off = tmp - entry->offset;
                } else {
                        align_off = 0;
@@ -2947,7 +2947,6 @@ void btrfs_init_free_space_ctl(struct btrfs_block_group *block_group,
 
        spin_lock_init(&ctl->tree_lock);
        ctl->unit = fs_info->sectorsize;
-       ctl->start = block_group->start;
        ctl->block_group = block_group;
        ctl->op = &free_space_op;
        ctl->free_space_bytes = RB_ROOT_CACHED;
index 33fc3b245648515b7f0f5f143cace8e90cf1af47..e75482fb2d69f132006a462edcd8cd8f41204008 100644 (file)
@@ -82,7 +82,6 @@ struct btrfs_free_space_ctl {
        int free_extents;
        int total_bitmaps;
        int unit;
-       u64 start;
        s32 discardable_extents[BTRFS_STAT_NR_ENTRIES];
        s64 discardable_bytes[BTRFS_STAT_NR_ENTRIES];
        const struct btrfs_free_space_op *op;