aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2012-06-12 12:53:16 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-06-12 12:53:16 -0700
commit0a02698f2851f419aa75536afb5f040a5c9ce002 (patch)
tree282e61422ac7bba8cc19449d3da1555a273f4bbe
parent493c82bb54397d2f46d2067bcedf966ea6da691f (diff)
parentdf5d2e2b942bb263972fe30a4baafd68056e02bd (diff)
downloadandroid_external_e2fsprogs-0a02698f2851f419aa75536afb5f040a5c9ce002.tar.gz
android_external_e2fsprogs-0a02698f2851f419aa75536afb5f040a5c9ce002.tar.bz2
android_external_e2fsprogs-0a02698f2851f419aa75536afb5f040a5c9ce002.zip
am df5d2e2b: e2fsck: handle an already recovered journal with a non-zero s_error field
* commit 'df5d2e2b942bb263972fe30a4baafd68056e02bd': e2fsck: handle an already recovered journal with a non-zero s_error field
-rw-r--r--e2fsck/journal.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/e2fsck/journal.c b/e2fsck/journal.c
index 155857d9..95affda3 100644
--- a/e2fsck/journal.c
+++ b/e2fsck/journal.c
@@ -798,6 +798,19 @@ no_has_journal:
*/
}
+ /*
+ * If we don't need to do replay the journal, check to see if
+ * the journal's errno is set; if so, we need to mark the file
+ * system as being corrupt and clear the journal's s_errno.
+ */
+ if (!(sb->s_feature_incompat & EXT3_FEATURE_INCOMPAT_RECOVER) &&
+ 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;
+ mark_buffer_dirty(journal->j_sb_buffer);
+ }
+
e2fsck_journal_release(ctx, journal, reset, 0);
return retval;
}