• David Sterba's avatar
    btrfs: reduce size of prelim_ref::level · 105c8c42
    David Sterba authored
    The values of level are bounded and fit into a byte so let's use it for
    the structure to reduce size from 88 to 80 bytes on a release build,
    which increases number of objects in the default 8K slab from 93 to 102.
    
    struct prelim_ref {
            struct rb_node             rbnode __attribute__((__aligned__(8))); /*     0    24 */
            u64                        root_id;              /*    24     8 */
            struct btrfs_key           key_for_search;       /*    32    17 */
            u8                         level;                /*    49     1 */
    
            /* XXX 2 bytes hole, try to pack */
    
            int                        count;                /*    52     4 */
            struct extent_inode_elem * inode_list;           /*    56     8 */
            /* --- cacheline 1 boundary (64 bytes) --- */
            u64                        parent;               /*    64     8 */
            u64                        wanted_disk_byte;     /*    72     8 */
    
            /* size: 80, cachelines: 2, members: 8 */
            /* sum members: 78, holes: 1, sum holes: 2 */
            /* forced alignments: 1 */
            /* last cacheline: 16 bytes */
    } __attribute__((__aligned__(8)));
    Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    105c8c42
backref.h 17.2 KB