On Thu, Mar 31 2016, Jan Kara wrote: > On Thu 31-03-16 15:20:00, NeilBrown wrote: >> On Wed, Mar 23 2016, Jan Kara wrote: >> >> > But how does this really help? If lookup_unlocked_mapping_entry() finds >> > there is no entry (and it was there before), the process deleting the entry >> > (or replacing it with something else) is responsible for waking up >> > everybody. >> >> "everybody" - yes. But it doesn't wake everybody does it? It just >> wakes one. >> >> + __wake_up(wq, TASK_NORMAL, 1, &key); >> ^one! >> >> Or am I misunderstanding how exclusive waiting works? > > Ah, OK. I have already fixed that in my local version of the patches so > that we wake-up everybody after deleting the entry but forgot to tell you. > So I have there now: > > __wake_up(wq, TASK_NORMAL, 0, &key); "0" meaning "MAX_INT+1" (or something). I didn't realize you could do that, but it makes perfect sense. > > Are you OK with the code now? Certainly less unhappy. Assume that I am OK but I'll try to have another look when you post again and make sure any lingering doubts are gone. Thanks, NeilBrown > > Honza > -- > Jan Kara > SUSE Labs, CR