Messages in this thread | | | Date | Thu, 22 Nov 2018 11:20:46 +0100 | From | Greg Kroah-Hartman <> | Subject | Re: [PATCH 03/10] staging: erofs: atomic_cond_read_relaxed on ref-locked workgroup |
| |
On Tue, Nov 20, 2018 at 10:34:18PM +0800, Gao Xiang wrote: > It's better to use atomic_cond_read_relaxed, which is implemented > in hardware instructions to monitor a variable changes currently > for ARM64, instead of open-coded busy waiting. > > Reviewed-by: Chao Yu <yuchao0@huawei.com> > Signed-off-by: Gao Xiang <gaoxiang25@huawei.com> > --- > drivers/staging/erofs/internal.h | 30 ++++++++++++++++++------------ > 1 file changed, 18 insertions(+), 12 deletions(-) > > diff --git a/drivers/staging/erofs/internal.h b/drivers/staging/erofs/internal.h > index 89dbd0888e53..eb80ba44d072 100644 > --- a/drivers/staging/erofs/internal.h > +++ b/drivers/staging/erofs/internal.h > @@ -221,23 +221,29 @@ static inline void erofs_workgroup_unfreeze( > preempt_enable(); > } > > +#if defined(CONFIG_SMP) > +static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp) > +{ > + return atomic_cond_read_relaxed(&grp->refcount, > + VAL != EROFS_LOCKED_MAGIC); > +} > +#else > +static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp) > +{ > + int v = atomic_read(&grp->refcount);
Again, why not use the refcount api instead of doing this yourself?
thanks,
greg k-h
| |