]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blobdiff - e2fsck/unix.c
Merge branch 'maint' into next
[thirdparty/e2fsprogs.git] / e2fsck / unix.c
index 6c4e26de2b763e254a0864ddfd146eda5b4f295d..7a8fce2472dec952af9c0421f4ac8edcc8da8cbf 100644 (file)
@@ -1151,6 +1151,11 @@ check_error:
                        ext2fs_mmp_clear(fs);
                        retval = 0;
                }
+       } else if (retval == EXT2_ET_MMP_CSUM_INVALID) {
+               if (fix_problem(ctx, PR_0_MMP_CSUM_INVALID, &pctx)) {
+                       ext2fs_mmp_clear(fs);
+                       retval = 0;
+               }
        }
        return retval;
 }
@@ -1269,6 +1274,7 @@ restart:
        if (!ctx->superblock && !(ctx->options & E2F_OPT_PREEN) &&
            !(ctx->flags & E2F_FLAG_SB_SPECIFIED) &&
            ((retval == EXT2_ET_BAD_MAGIC) ||
+            (retval == EXT2_ET_SB_CSUM_INVALID) ||
             (retval == EXT2_ET_CORRUPT_SUPERBLOCK) ||
             ((retval == 0) && (retval2 = ext2fs_check_desc(fs))))) {
                if (retval) {
@@ -1746,7 +1752,7 @@ no_journal:
        }
 
        if ((run_result & E2F_FLAG_CANCEL) == 0 &&
-           sb->s_feature_ro_compat & EXT4_FEATURE_RO_COMPAT_GDT_CSUM &&
+           ext2fs_has_group_desc_csum(ctx->fs) &&
            !(ctx->options & E2F_OPT_READONLY)) {
                retval = ext2fs_set_gdt_csum(ctx->fs);
                if (retval) {