On Fri, Nov 24, 2006 at 12:49:08AM +0300, Oleg Nesterov wrote: > On 11/23, Paul E. McKenney wrote: > > > > For general use, I believe that this has > > difficulties with the sequence of events I sent out on November 20th, see: > > > > http://marc.theaimsgroup.com/?l=linux-kernel&m=116397154808901&w=2 > > > > ... > > > > I don't understand why an unlucky sequence of events mightn't be able > > to hang this __wait_event(). Suppose we did the atomic_dec_and_test(), > > then some other CPU executed xxx_read_unlock(), finding no one to awaken, > > then we execute the __wait_event()? > > Please note how ->ctr[] is initialized, > > atomic_set(sp->ctr + 0, 1); <---- 1, not 0 > atomic_set(sp->ctr + 1, 0); > > atomic_read(sp->ctr + idx) == 0 means that this counter is inactive, > nobody use it.
I definitely should have slept before commenting on the earlier version, it would appear. ;-) Please accept my apologies for my confusion! I will take a look at your later patch. Thanx, Paul - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/