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 {
/* 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
......
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