e2fsck: update the backup superblocks if the feature bitmasks are changed

If e2fsck adds or deletes any of the feature bitmasks, clear
EXT2_FLAG_MASTER_SB_ONLY so the backup superblocks are updated when
e2fsck finishes.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
diff --git a/e2fsck/journal.c b/e2fsck/journal.c
index 756bbcb..dbe1bf1 100644
--- a/e2fsck/journal.c
+++ b/e2fsck/journal.c
@@ -454,6 +454,7 @@
 			sb->s_feature_compat &= ~EXT3_FEATURE_COMPAT_HAS_JOURNAL;
 			sb->s_journal_inum = 0;
 			ctx->flags |= E2F_FLAG_JOURNAL_INODE;
+			ctx->fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
 			e2fsck_clear_recover(ctx, 1);
 			return 0;
 		}
@@ -753,6 +754,7 @@
 			e2fsck_clear_recover(ctx, force_fsck);
 		} else if (!(ctx->options & E2F_OPT_READONLY)) {
 			sb->s_feature_compat |= EXT3_FEATURE_COMPAT_HAS_JOURNAL;
+			ctx->fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
 			ext2fs_mark_super_dirty(ctx->fs);
 		}
 	}
diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index 5e088e2..f58e5a9 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -267,6 +267,7 @@
 		    fix_problem(ctx, PR_2_FEATURE_LARGE_FILES, &pctx)) {
 			sb->s_feature_ro_compat |=
 				EXT2_FEATURE_RO_COMPAT_LARGE_FILE;
+			fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
 			ext2fs_mark_super_dirty(fs);
 		}
 		if (sb->s_rev_level == EXT2_GOOD_OLD_REV &&
@@ -280,6 +281,7 @@
 		if (fs->flags & EXT2_FLAG_RW) {
 			sb->s_feature_ro_compat &= 
 				~EXT2_FEATURE_RO_COMPAT_LARGE_FILE;
+			fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
 			ext2fs_mark_super_dirty(fs);
 		}
 	}
diff --git a/e2fsck/super.c b/e2fsck/super.c
index e90e961..b4ddca2 100644
--- a/e2fsck/super.c
+++ b/e2fsck/super.c
@@ -682,7 +682,7 @@
 			fs->super->s_feature_incompat &=
 				~EXT2_FEATURE_INCOMPAT_FILETYPE;
 			ext2fs_mark_super_dirty(fs);
-
+			fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
 		}
 	}
 
@@ -700,6 +700,7 @@
 	    fix_problem(ctx, PR_0_FS_REV_LEVEL, &pctx)) {
 		ext2fs_update_dynamic_rev(fs);
 		ext2fs_mark_super_dirty(fs);
+		fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
 	}
 
 	check_resize_inode(ctx);
diff --git a/e2fsck/unix.c b/e2fsck/unix.c
index 72545da..fbfd8e2 100644
--- a/e2fsck/unix.c
+++ b/e2fsck/unix.c
@@ -1252,6 +1252,7 @@
 			if (journal_size < 0) {
 				fs->super->s_feature_compat &=
 					~EXT3_FEATURE_COMPAT_HAS_JOURNAL;
+				fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
 				com_err(ctx->program_name, 0, 
 					_("Couldn't determine journal size"));
 				goto no_journal;