Commit 734f7141 authored by Kent Overstreet's avatar Kent Overstreet

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: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent de517c95
...@@ -156,15 +156,24 @@ enum { ...@@ -156,15 +156,24 @@ enum {
/* Embedded in struct bch_fs */ /* Embedded in struct bch_fs */
struct journal { struct journal {
/* Fastpath stuff up front: */ /* Fastpath stuff up front: */
struct {
unsigned long flags;
union journal_res_state reservations; union journal_res_state reservations;
union journal_preres_state prereserved;
} __aligned(SMP_CACHE_BYTES);
unsigned long flags;
/* Max size of current journal entry */ /* Max size of current journal entry */
unsigned cur_entry_u64s; unsigned cur_entry_u64s;
unsigned cur_entry_sectors; 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 * 0, or -ENOSPC if waiting on journal reclaim, or -EROFS if
* insufficient devices: * insufficient devices:
...@@ -178,13 +187,7 @@ struct journal { ...@@ -178,13 +187,7 @@ struct journal {
cur_entry_insufficient_devices, cur_entry_insufficient_devices,
} cur_entry_error; } 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; unsigned buf_size_want;
/* /*
* Two journal entries -- one is currently open for new entries, the * Two journal entries -- one is currently open for new entries, the
* other is possibly being written out. * other is possibly being written out.
...@@ -277,7 +280,7 @@ struct journal { ...@@ -277,7 +280,7 @@ struct journal {
#ifdef CONFIG_DEBUG_LOCK_ALLOC #ifdef CONFIG_DEBUG_LOCK_ALLOC
struct lockdep_map res_map; struct lockdep_map res_map;
#endif #endif
}; } __aligned(SMP_CACHE_BYTES);
/* /*
* Embedded in struct bch_dev. First three fields refer to the array of journal * Embedded in struct bch_dev. First three fields refer to the array of journal
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment