From 734f7141ce45360203ddaa64782279653c1c9588 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Wed, 28 Dec 2022 17:13:08 -0500 Subject: [PATCH] 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 --- fs/bcachefs/journal_types.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) 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 -- 2.30.2