

A very long time ago ext3_fill_super() was beng called under the VFS's
lock_super(), and it had to drop that lock for deadlock avoidance reasons.

But the VFS was later changed to not take lock_super() across ->fill_super(),
so we're upping a non-downed semaphore.

Just take it all out...


 ext3/super.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff -puN fs/ext3/super.c~ext3_fill_super-no-unlock_super fs/ext3/super.c
--- 25/fs/ext3/super.c~ext3_fill_super-no-unlock_super	2003-02-09 11:46:53.000000000 -0800
+++ 25-akpm/fs/ext3/super.c	2003-02-09 12:24:46.000000000 -0800
@@ -1343,9 +1343,10 @@ static int ext3_fill_super (struct super
 	 * superblock lock.
 	 */
 	EXT3_SB(sb)->s_mount_state |= EXT3_ORPHAN_FS;
-	unlock_super(sb);	/* akpm: sigh */
+	if (down_trylock(&sb->s_lock))	/* It should not be held */
+		BUG();
+	up(&sb->s_lock);
 	ext3_orphan_cleanup(sb, es);
-	lock_super(sb);
 	EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
 	if (needs_recovery)
 		printk (KERN_INFO "EXT3-fs: recovery complete.\n");

_
