On 03/16, Tejun Heo wrote: > > On Thu, Mar 16, 2017 at 11:33:01AM -0400, Tejun Heo wrote: > > > And perhaps we should add another helper, say, > > > > > > #define lockless_assign_pointer(ptr, val) \ > > > smp_store_release(&ptr, val) > > > > > > for set_kthread_struct() ? it can have more users. > > > > > > Not that I think you should change your patch, I am just asking. > > > > Ah yeah, that would look better. I vaguely remembered the new macro > > but couldn't quite remember it fully. :) Will update the patch. > > Oops, as for adding lockless_assign_pointer(), wouldn't smp_wmb() be a > better match for smp_read_barrier_depends()? ISTR acquire/release > pairs being more expensive on some archs.
No, no, don't ask me, I can't know ;) But. Note that rcu_assign_pointer() (which should pair with smp_read_barrier_depends/lockless_dereference too) uses smp_store_release(), and the changelog says "potentially less overhead". See 88c1863066ccfa456 "rcu: Define rcu_assign_pointer() in terms of smp_store_release()". And this discussion is another argument to add the new helper, we can always change it to use wmb or store_release, or whatever else. Plus arch/ can overwrite it. Oleg.

