One of the largest places for BKL contention in 2.4 is ext2_get_block().  On my 2-way, dbench causes around 4% of combined CPU time with a max spin wait time of 55ms just spinning on the lock_kernel() in ext2_get_block().  On bigger machines, it just gets worse.  Say what you want about dbench, I know it isn't the most real-world benchmark, but it does provide a quick and dirty method for producing a nasty amount of disk load.  

Al Viro produced patch for 2.5 to address this problem:
http://linux.bkbits.net:8080/linux-2.5/cset@1.290?nav=index.html|ChangeSet@-3w

I've done a fairly straightforward backport to the 2.4 tree.  But, I'm not sure how it interacts with the VFS patches which came earlier in 2.5.  It is quite stable on my 2-way; definitely no deadlocks.  I'll be testing it on larger machines soon.  

I don't expect it to go into the mainline kernel right away, but I would like the secondary tree maintainers to pick it up and let people pound on it.  

-- 
Dave Hansen
haveblue@us.ibm.com
