On Tue, May 06, 2008 at 10:21:53AM -0700, Andrew Morton wrote: > Do we actually know that the locks code is implicated in this regression? Not yet. We don't even know it's the BKL. It's just my best guess. We're waiting for the original reporter to run some tests Ingo pointed him at. > I'd initially thought "lseek" but afaict tmpfs doesn't hit default_llseek() > or remote_llseek(). Correct. > Finally: how come we regressed by swapping the semaphore implementation > anyway? We went from one sleeping lock implementation to another - I'd > have expected performance to be pretty much the same. > > <looks at the implementation> > > 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. Maybe we should make lock_kernel do this: if (likely(!depth)) { unsigned long flags; local_save_flags(flags); down(); local_irq_restore(flags); } But tweaking down() is not worth it -- we should be eliminating users of both the BKL and semaphores instead. > 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. -- Intel are signing my paycheques ... these opinions are still mine "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." -- 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