• David Sterba's avatar
    btrfs: merge ordered work callbacks in btrfs_work into one · 078b8b90
    David Sterba authored
    There are two callbacks defined in btrfs_work but only two actually make
    use of them, otherwise there are NULLs. We can get rid of the freeing
    callback making it a special case of the normal work. This reduces the
    size of btrfs_work by 8 bytes, final layout:
    
    struct btrfs_work {
            btrfs_func_t               func;                 /*     0     8 */
            btrfs_ordered_func_t       ordered_func;         /*     8     8 */
            struct work_struct         normal_work;          /*    16    32 */
            struct list_head           ordered_list;         /*    48    16 */
            /* --- cacheline 1 boundary (64 bytes) --- */
            struct btrfs_workqueue *   wq;                   /*    64     8 */
            long unsigned int          flags;                /*    72     8 */
    
            /* size: 80, cachelines: 2, members: 6 */
            /* last cacheline: 16 bytes */
    };
    
    This in turn reduces size of other structures (on a release config):
    
    - async_chunk			 160 ->  152
    - async_submit_bio		 152 ->  144
    - btrfs_async_delayed_work	 104 ->   96
    - btrfs_caching_control		 176 ->  168
    - btrfs_delalloc_work		 144 ->  136
    - btrfs_fs_info			3608 -> 3600
    - btrfs_ordered_extent		 440 ->  424
    - btrfs_writepage_fixup		 104 ->   96
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    078b8b90
ordered-data.c 35.2 KB