|
@@ -1300,9 +1300,11 @@ static int parse_options(char *options, struct super_block *sb,
|
|
|
*journal_devnum = option;
|
|
|
break;
|
|
|
case Opt_journal_checksum:
|
|
|
- break; /* Kept for backwards compatibility */
|
|
|
+ set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
|
|
|
+ break;
|
|
|
case Opt_journal_async_commit:
|
|
|
set_opt(sbi->s_mount_opt, JOURNAL_ASYNC_COMMIT);
|
|
|
+ set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
|
|
|
break;
|
|
|
case Opt_noload:
|
|
|
set_opt(sbi->s_mount_opt, NOLOAD);
|
|
@@ -2759,14 +2761,20 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
|
|
goto failed_mount4;
|
|
|
}
|
|
|
|
|
|
- jbd2_journal_set_features(sbi->s_journal,
|
|
|
- JBD2_FEATURE_COMPAT_CHECKSUM, 0, 0);
|
|
|
- if (test_opt(sb, JOURNAL_ASYNC_COMMIT))
|
|
|
- jbd2_journal_set_features(sbi->s_journal, 0, 0,
|
|
|
+ if (test_opt(sb, JOURNAL_ASYNC_COMMIT)) {
|
|
|
+ jbd2_journal_set_features(sbi->s_journal,
|
|
|
+ JBD2_FEATURE_COMPAT_CHECKSUM, 0,
|
|
|
JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT);
|
|
|
- else
|
|
|
+ } else if (test_opt(sb, JOURNAL_CHECKSUM)) {
|
|
|
+ jbd2_journal_set_features(sbi->s_journal,
|
|
|
+ JBD2_FEATURE_COMPAT_CHECKSUM, 0, 0);
|
|
|
jbd2_journal_clear_features(sbi->s_journal, 0, 0,
|
|
|
JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT);
|
|
|
+ } else {
|
|
|
+ jbd2_journal_clear_features(sbi->s_journal,
|
|
|
+ JBD2_FEATURE_COMPAT_CHECKSUM, 0,
|
|
|
+ JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT);
|
|
|
+ }
|
|
|
|
|
|
/* We have now updated the journal if required, so we can
|
|
|
* validate the data journaling mode. */
|