bcachefs: Improve struct journal layout
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 28 Dec 2022 22:13:08 +0000 (17:13 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:26 +0000 (17:09 -0400)
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>
fs/bcachefs/journal_types.h

index 9facd3f128bb292b697e94219862eb5886c044e6..3012b374625f9b285a6027f77fb280330f8f226c 100644 (file)
@@ -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