diff options
author | Robin Holt <holt@sgi.com> | 2005-01-04 05:26:45 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-01-04 05:26:45 -0800 |
commit | eb8c68343707a7bca73c2ae606acb734593ef616 (patch) | |
tree | 05bc3b16fff2912e5ee100a47e7ab49cd0eb3cb8 /fs | |
parent | fe395411527d6a56d4c8a79439defc49eb6e390f (diff) | |
download | history-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.c | 2 |
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); |