]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: reorder members in btrfs_delayed_root for better packing
authorDavid Sterba <dsterba@suse.com>
Fri, 9 Jan 2026 17:17:41 +0000 (18:17 +0100)
committerDavid Sterba <dsterba@suse.com>
Tue, 3 Feb 2026 06:56:20 +0000 (07:56 +0100)
There are two unnecessary 4B holes in btrfs_delayed_root;

struct btrfs_delayed_root {
        spinlock_t                 lock;                 /*     0     4 */

        /* XXX 4 bytes hole, try to pack */

        struct list_head           node_list;            /*     8    16 */
        struct list_head           prepare_list;         /*    24    16 */
        atomic_t                   items;                /*    40     4 */
        atomic_t                   items_seq;            /*    44     4 */
        int                        nodes;                /*    48     4 */

        /* XXX 4 bytes hole, try to pack */

        wait_queue_head_t          wait;                 /*    56    24 */

        /* size: 80, cachelines: 2, members: 7 */
        /* sum members: 72, holes: 2, sum holes: 8 */
        /* last cacheline: 16 bytes */
};

Reordering 'nodes' after 'lock' reduces size by 8B, to 72 on release
config.

Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/fs.h

index d315530a2928256ceb1745660aaf4c8441cd24f7..d3762fbe7267a438041aa937ecdf5ee92aba7cb6 100644 (file)
@@ -465,6 +465,7 @@ struct btrfs_commit_stats {
 
 struct btrfs_delayed_root {
        spinlock_t lock;
+       int nodes;              /* for delayed nodes */
        struct list_head node_list;
        /*
         * Used for delayed nodes which is waiting to be dealt with by the
@@ -474,7 +475,6 @@ struct btrfs_delayed_root {
        struct list_head prepare_list;
        atomic_t items;         /* for delayed items */
        atomic_t items_seq;     /* for delayed items */
-       int nodes;              /* for delayed nodes */
        wait_queue_head_t wait;
 };