]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/ext3/super.c
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
[karo-tx-linux.git] / fs / ext3 / super.c
index 3a10b884e1bebe881b53e79d8643a53c6e2efca9..726c7ef6cdf129df3bd4da58e791919be7e1aeca 100644 (file)
@@ -2059,9 +2059,10 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
        EXT3_SB(sb)->s_mount_state |= EXT3_ORPHAN_FS;
        ext3_orphan_cleanup(sb, es);
        EXT3_SB(sb)->s_mount_state &= ~EXT3_ORPHAN_FS;
-       if (needs_recovery)
+       if (needs_recovery) {
+               ext3_mark_recovery_complete(sb, es);
                ext3_msg(sb, KERN_INFO, "recovery complete");
-       ext3_mark_recovery_complete(sb, es);
+       }
        ext3_msg(sb, KERN_INFO, "mounted filesystem with %s data mode",
                test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_JOURNAL_DATA ? "journal":
                test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
@@ -2229,11 +2230,11 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
                goto out_bdev;
        }
        journal->j_private = sb;
-       ll_rw_block(READ, 1, &journal->j_sb_buffer);
-       wait_on_buffer(journal->j_sb_buffer);
-       if (!buffer_uptodate(journal->j_sb_buffer)) {
-               ext3_msg(sb, KERN_ERR, "I/O error on journal device");
-               goto out_journal;
+       if (!bh_uptodate_or_lock(journal->j_sb_buffer)) {
+               if (bh_submit_read(journal->j_sb_buffer)) {
+                       ext3_msg(sb, KERN_ERR, "I/O error on journal device");
+                       goto out_journal;
+               }
        }
        if (be32_to_cpu(journal->j_superblock->s_nr_users) != 1) {
                ext3_msg(sb, KERN_ERR,