[PATCH] remove BKL from ext2's readdir

From: Alex Tomas (bzzz@tmi.comex.ru)
Date: Sat Mar 15 2003 - 05:13:20 EST


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/



This archive was generated by hypermail 2b29 : Sat Mar 15 2003 - 22:00:43 EST