* Matthew Wilcox <matthew@xxxxxx> wrote: > > down(), down_interruptible() and down_try() should use > > spin_lock_irq(), not irqsave. > > We talked about this ... the BKL actually requires that you be able to > acquire it with interrupts disabled. [...] hm, where does it require it, besides the early bootup code? (which should just be fixed) down_trylock() is OK as irqsave/irqrestore for legacy reasons, but that is fundamentally atomic anyway. > > up() seems to be doing wake-one, FIFO which is nice. Did the > > implementation which we just removed also do that? Was it perhaps > > accidentally doing LIFO or something like that? > > That's a question for someone who knows x86 assembler, I think. the assembly is mostly just for the fastpath - and a 40% regression cannot be about fastpath differences. In the old code the scheduling happens in lib/semaphore-sleeper.c, and from the looks of it it appears to be a proper FIFO as well. (plus this small wakeup weirdness it has) i reviewed the new code in kernel/semaphore.c as well and can see nothing bad in it - it does proper wake-up, FIFO queueing, like the mutex code. Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html