From: Kent Overstreet Date: Wed, 28 Dec 2022 22:13:08 +0000 (-0500) Subject: bcachefs: Improve struct journal layout X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=734f7141ce45360203ddaa64782279653c1c9588;p=linux.git bcachefs: Improve struct journal layout This cacheline aligns struct journal, and puts j->reservations and j->prereserved on their own cacheline - we may want to split them up in a separate patch. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/journal_types.h b/fs/bcachefs/journal_types.h index 9facd3f128bb2..3012b374625f9 100644 --- a/fs/bcachefs/journal_types.h +++ b/fs/bcachefs/journal_types.h @@ -156,15 +156,24 @@ enum { /* Embedded in struct bch_fs */ struct journal { /* Fastpath stuff up front: */ - - unsigned long flags; + struct { union journal_res_state reservations; + union journal_preres_state prereserved; + + } __aligned(SMP_CACHE_BYTES); + + unsigned long flags; + /* Max size of current journal entry */ unsigned cur_entry_u64s; unsigned cur_entry_sectors; + /* Reserved space in journal entry to be used just prior to write */ + unsigned entry_u64s_reserved; + + /* * 0, or -ENOSPC if waiting on journal reclaim, or -EROFS if * insufficient devices: @@ -178,13 +187,7 @@ struct journal { cur_entry_insufficient_devices, } cur_entry_error; - union journal_preres_state prereserved; - - /* Reserved space in journal entry to be used just prior to write */ - unsigned entry_u64s_reserved; - unsigned buf_size_want; - /* * Two journal entries -- one is currently open for new entries, the * other is possibly being written out. @@ -277,7 +280,7 @@ struct journal { #ifdef CONFIG_DEBUG_LOCK_ALLOC struct lockdep_map res_map; #endif -}; +} __aligned(SMP_CACHE_BYTES); /* * Embedded in struct bch_dev. First three fields refer to the array of journal