On 10/04, Peter Zijlstra wrote: > > On Fri, Oct 04, 2013 at 01:15:13PM +0200, Oleg Nesterov wrote: > > Of course we can fix this, but wait_for_completion/complete already > > does the necessary work: x->done acts as a resource counter which is > > always checked/incremented/decremented under the same lock. > > Urgh, so now you're not using a semaphore as completion but using a > completion as semaphore.
Yes. And we can use it as semaphore only because we already have gp_count. Of course, we could add ->gp_mutex and change enter/exit to lock/unlock it if exclusive. But I do not really like it even if this can makes the code a bit (only a little bit) simpler. This will increase sizeof() and for no reason, I think, because to some degree this will also duplicate the synchronization logic. And while this doesn't really matter, this will penalize the contending writers a bit: it is not easy (but of course possible) to take this mutex after rss->gp_count++, and we do want to increment this counter "asap". Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/