Messages in this thread | ![/](/images/icornerl.gif) | | Date | Wed, 24 Nov 2010 11:37:02 -0800 | From | Jeremy Fitzhardinge <> | Subject | Re: [thiscpuops upgrade 10/10] Lockless (and preemptless) fastpaths for slub |
| |
On 11/24/2010 08:17 AM, Christoph Lameter wrote: > On Wed, 24 Nov 2010, Pekka Enberg wrote: > >>> + /* >>> + * The transaction ids are globally unique per cpu and per operation on >>> + * a per cpu queue. Thus they can be guarantee that the cmpxchg_double >>> + * occurs on the right processor and that there was no operation on the >>> + * linked list in between. >>> + */ >>> + tid = c->tid; >>> + barrier(); >> You're using a compiler barrier after every load from c->tid. Why? > To make sure that the compiler does not do something like loading the tid > later. The tid must be obtained before the rest of the information from > the per cpu slab data is retrieved in order to ensure that we have a > consistent set of data to operate on.
Isn't that best expressed with ACCESS_ONCE()?
J
| ![\](/images/icornerr.gif) |