--- linux-2.4.20-ext3merge/fs/ext3/super.c.=K0012=.orig 2002-12-02 15:55:45.000000000 +0000 +++ linux-2.4.20-ext3merge/fs/ext3/super.c 2002-12-02 15:58:00.000000000 +0000 @@ -1627,7 +1627,12 @@ sb->s_dirt = 0; target = log_start_commit(EXT3_SB(sb)->s_journal, NULL); - if (do_sync_supers) { + /* + * Tricky --- if we are unmounting, the write really does need + * to be synchronous. We can detect that by looking for NULL in + * sb->s_root. + */ + if (do_sync_supers || !sb->s_root) { unlock_super(sb); log_wait_commit(EXT3_SB(sb)->s_journal, target); lock_super(sb);