Messages in this thread | | | Date | Wed, 24 Nov 2010 13:53:47 -0600 (CST) | From | Christoph Lameter <> | Subject | Re: [thiscpuops upgrade 10/10] Lockless (and preemptless) fastpaths for slub |
| |
On Wed, 24 Nov 2010, Jeremy Fitzhardinge wrote:
> 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()?
ACCESS_ONCE does not prevent reordering if used once it seems when one reads the comments. ACCESS_ONCE() uses volatile? Uggh.
| |