[PATCH] remove BKL from ext2's readdir

Alex Tomas (bzzz@tmi.comex.ru)
15 Mar 2003 13:13:20 +0300


hi!

I took a look at readdir() in 2.5.64's ext2 and found it serialized by BKL.
As far as I see in sources, there is no need in this BKL. So, here is small
patch and some benchmarks. of course, the result was expected pretty much ;)

500 1000
readdir+BKL: 0m11.793s 0m23.403s
readdir-BKL: 0m6.060s 0m12.113s

description: two processes read own dir populated by files (500 and 1000 files).
this repeats for 100000 times. the iron is dual 1GHz P3.

diff -uNr linux/fs/ext2/dir.c edited/fs/ext2/dir.c
--- linux/fs/ext2/dir.c Sat Mar 15 13:08:24 2003
+++ edited/fs/ext2/dir.c Sat Mar 15 13:08:11 2003
@@ -259,8 +259,6 @@
int need_revalidate = (filp->f_version != inode->i_version);
int ret = 0;

- lock_kernel();
-
if (pos > inode->i_size - EXT2_DIR_REC_LEN(1))
goto done;

@@ -313,7 +311,6 @@
filp->f_pos = (n << PAGE_CACHE_SHIFT) | offset;
filp->f_version = inode->i_version;
UPDATE_ATIME(inode);
- unlock_kernel();
return 0;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/