Messages in this thread | | | Date | Thu, 16 Apr 2009 16:33:51 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH] slow_work_thread() should do the exclusive wait |
| |
On 04/16, David Howells wrote: > > Andrew Morton <akpm@linux-foundation.org> wrote: > > > I wonder if slow_work_cull_timeout() should have some sort of barrier, > > so the write is suitably visible to the woken thread. > > That's an interesting question. Should wake_up() imply a barrier of any sort, > I wonder. Well, __wake_up() does impose a barrier as it uses a spinlock, but > I wonder if that's sufficient.
wake_up() does imply the barrier. Note the smp_wmb() in try_to_wake_up(). And in fact this wmb() implies mb(), because spin_lock() itself is STORE, and the futher LOADs can't leak up before spin_lock().
But afaics, this doesn't matter? prepare_to_wait() sets task->state under wait_queue_head_t->lock and wake_up() takes this look too, so we can't miss the event.
Or I completely misunderstood the issue...
Oleg.
| |