On Sun, Mar 23, 2025 at 12:20:21PM +0800, Alan Huang wrote: > The smp_rmb() guarantees that reads from reservations.counter > occur before accessing cur_entry_u64s. It's paired with the > atomic64_try_cmpxchg in journal_entry_open. > > Signed-off-by: Alan Huang <[email protected]>
We're only using this once, the barrier suffices here. > --- > > Since I'm touching this part, add the READ_ONCE anyway. > > > fs/bcachefs/journal.h | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/fs/bcachefs/journal.h b/fs/bcachefs/journal.h > index ab68c5c4d8d8..fe362ddd2895 100644 > --- a/fs/bcachefs/journal.h > +++ b/fs/bcachefs/journal.h > @@ -350,9 +350,11 @@ static inline int journal_res_get_fast(struct journal *j, > > /* > * Check if there is still room in the current journal > - * entry: > + * entry, smp_rmb() guarantees that reads from > reservations.counter > + * occur before accessing cur_entry_u64s: > */ > - if (new.cur_entry_offset + res->u64s > j->cur_entry_u64s) > + smp_rmb(); > + if (new.cur_entry_offset + res->u64s > > READ_ONCE(j->cur_entry_u64s)) > return 0; > > EBUG_ON(!journal_state_count(new, new.idx)); > -- > 2.48.1 >
