porting: prefer READ_ONCE in place of ACCESS_ONCE

This commit is contained in:
Thomas Schoebel-Theuer 2021-01-25 11:56:46 +01:00 committed by Thomas Schoebel-Theuer
parent 706b8ae17c
commit 31bb5cb182
2 changed files with 12 additions and 5 deletions

View File

@ -253,4 +253,11 @@ extern int _compat_unlink(
#define HAS_ZLIB #define HAS_ZLIB
#endif #endif
/* general compat */
/* new code prefers READ_ONCE in place of ACCESS_ONCE */
#ifndef READ_ONCE
#define READ_ONCE ACCESS_ONCE
#endif
#endif /* _MARS_COMPAT */ #endif /* _MARS_COMPAT */

View File

@ -435,20 +435,20 @@ loff_t mf_dirty_length(struct mapfree_info *mf, enum dirty_stage stage)
*/ */
if (stage > 0) { if (stage > 0) {
struct dirty_length *d0 = _get_dl(mf, 0); struct dirty_length *d0 = _get_dl(mf, 0);
u64 nr1 = ACCESS_ONCE(dl->dl_appends); u64 nr1 = READ_ONCE(dl->dl_appends);
u64 nr0 = ACCESS_ONCE(d0->dl_appends); u64 nr0 = READ_ONCE(d0->dl_appends);
if (nr0 <= nr1) { if (nr0 <= nr1) {
loff_t real_size = mapfree_real_size(mf); loff_t real_size = mapfree_real_size(mf);
/* check for races once again */ /* check for races once again */
nr1 = ACCESS_ONCE(dl->dl_appends); nr1 = READ_ONCE(dl->dl_appends);
nr0 = ACCESS_ONCE(d0->dl_appends); nr0 = READ_ONCE(d0->dl_appends);
if (nr0 <= nr1) if (nr0 <= nr1)
return real_size; return real_size;
} }
} }
return ACCESS_ONCE(dl->dl_length); return READ_ONCE(dl->dl_length);
#else /* cannot rely on atomic read of two 32bit values */ #else /* cannot rely on atomic read of two 32bit values */
loff_t res; loff_t res;
unsigned long flags; unsigned long flags;