• David Sterba's avatar
    btrfs: reduce size of struct btrfs_ref · 321f4992
    David Sterba authored
    We can reduce two members' size that in turn reduce size of struct
    btrfs_ref from 64 to 56 bytes. As the structure is often used as a local
    variable several functions reduce their stack usage.
    
    - make enum btrfs_ref_type packed, there are only 4 values
    
    - switch action and its values to a packed enum
    
    Final structure layout:
    
    struct btrfs_ref {
            enum btrfs_ref_type        type;                 /*     0     1 */
            enum btrfs_delayed_ref_action action;            /*     1     1 */
            bool                       skip_qgroup;          /*     2     1 */
    
            /* XXX 5 bytes hole, try to pack */
    
            u64                        bytenr;               /*     8     8 */
            u64                        len;                  /*    16     8 */
            u64                        parent;               /*    24     8 */
            union {
                    struct btrfs_data_ref data_ref;          /*    32    24 */
                    struct btrfs_tree_ref tree_ref;          /*    32    16 */
            };                                               /*    32    24 */
    
            /* size: 56, cachelines: 1, members: 7 */
            /* sum members: 51, holes: 1, sum holes: 5 */
            /* last cacheline: 56 bytes */
    };
    Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    321f4992
delayed-ref.h 11.8 KB