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]>
---

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


Reply via email to