mirror of
https://github.com/schoebel/mars
synced 2025-02-09 08:37:59 +00:00
porting: prefer READ_ONCE in place of ACCESS_ONCE
This commit is contained in:
parent
706b8ae17c
commit
31bb5cb182
@ -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 */
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user