diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2022-12-28 17:13:08 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:09:26 -0400 |
commit | 734f7141ce45360203ddaa64782279653c1c9588 (patch) | |
tree | 4b907f683e1db987bb2d9763003710a3cc4888ca /fs/bcachefs/journal_types.h | |
parent | de517c95513d420d465ca26d354a56d9e6ed6e17 (diff) |
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 <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/journal_types.h')
-rw-r--r-- | fs/bcachefs/journal_types.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/fs/bcachefs/journal_types.h b/fs/bcachefs/journal_types.h index 9facd3f128bb..3012b374625f 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 |