aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2012-06-12 14:52:29 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-06-12 14:52:29 -0700
commit63c2d4871fe374f13a0bc6e2efa341663277c123 (patch)
tree5b4c2d40fa115ca1296b3361b27958ad371f1f64
parentf67550728914cb76896ef58d833dd68b4c6d5048 (diff)
parent5886dc5cdcccd3d09a208d41d8c23748c25a2a22 (diff)
downloade2fsprogs-jb-mr2-dev.tar.gz
* commit '5886dc5cdcccd3d09a208d41d8c23748c25a2a22': e2fsck: correctly propagate error from journal to superblock
-rw-r--r--e2fsck/journal.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/e2fsck/journal.c b/e2fsck/journal.c
index bf15cfa3..169aa401 100644
--- a/e2fsck/journal.c
+++ b/e2fsck/journal.c
@@ -844,15 +844,7 @@ static errcode_t recover_ext3_journal(e2fsck_t ctx)
if (journal->j_failed_commit) {
pctx.ino = journal->j_failed_commit;
fix_problem(ctx, PR_0_JNL_TXN_CORRUPT, &pctx);
- ctx->fs->super->s_state |= EXT2_ERROR_FS;
- ext2fs_mark_super_dirty(ctx->fs);
- }
-
-
- if (journal->j_superblock->s_errno) {
- ctx->fs->super->s_state |= EXT2_ERROR_FS;
- ext2fs_mark_super_dirty(ctx->fs);
- journal->j_superblock->s_errno = 0;
+ journal->j_superblock->s_errno = -EINVAL;
mark_buffer_dirty(journal->j_sb_buffer);
}
@@ -909,7 +901,13 @@ int e2fsck_run_ext3_journal(e2fsck_t ctx)
/* Set the superblock flags */
e2fsck_clear_recover(ctx, recover_retval);
- return recover_retval;
+
+ /*
+ * Do one last sanity check, and propagate journal->s_errno to
+ * the EXT2_ERROR_FS flag in the fs superblock if needed.
+ */
+ retval = e2fsck_check_ext3_journal(ctx);
+ return retval ? retval : recover_retval;
}
/*