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
> 

Reply via email to