btrfs: merge ordered work callbacks in btrfs_work into one
authorDavid Sterba <dsterba@suse.com>
Tue, 19 Sep 2023 16:49:23 +0000 (18:49 +0200)
committerDavid Sterba <dsterba@suse.com>
Thu, 12 Oct 2023 14:44:10 +0000 (16:44 +0200)
commit078b8b90b8ffec54f7dc1e8ef6c1078d1e7d3dae
treefe7b21a9bf15ee714456353146e0076ca3b2cc41
parente9b9b911e03c82afce7bb9e2f73c92202c95b62a
btrfs: merge ordered work callbacks in btrfs_work into one

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: David Sterba <dsterba@suse.com>
fs/btrfs/async-thread.c
fs/btrfs/async-thread.h
fs/btrfs/bio.c
fs/btrfs/block-group.c
fs/btrfs/delayed-inode.c
fs/btrfs/inode.c
fs/btrfs/ordered-data.c
fs/btrfs/qgroup.c
include/trace/events/btrfs.h