aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorRobin Holt <holt@sgi.com>2005-01-04 05:26:45 -0800
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-01-04 05:26:45 -0800
commiteb8c68343707a7bca73c2ae606acb734593ef616 (patch)
tree05bc3b16fff2912e5ee100a47e7ab49cd0eb3cb8 /fs
parentfe395411527d6a56d4c8a79439defc49eb6e390f (diff)
downloadhistory-eb8c68343707a7bca73c2ae606acb734593ef616.tar.gz
[PATCH] Hold BKL for shorter period in generic_shutdown_super().
Testing revealed long pauses of the entire system while autofs initiated umounts as a result of timing out the mounts. It was noticed that during a umount, the BKL is held while scanning the inode_list and removing and inodes that are candidates. This patch moves locking until after the first pass had gone through the inode_list. Testing revelead that on an ia64 machine with a filesystem that had 8.4 Million inodes, there were no observable pauses during the umount. This was down from over 4 seconds without this patch. Signed-Off-By: Robin Holt <holt@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/super.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/super.c b/fs/super.c
index a24e215af885fe..dd32396bb07142 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -232,10 +232,10 @@ void generic_shutdown_super(struct super_block *sb)
dput(root);
fsync_super(sb);
lock_super(sb);
- lock_kernel();
sb->s_flags &= ~MS_ACTIVE;
/* bad name - it should be evict_inodes() */
invalidate_inodes(sb);
+ lock_kernel();
if (sop->write_super && sb->s_dirt)
sop->write_super(sb);