diff options
Diffstat (limited to 'fs/ext4/super.c')
| -rw-r--r-- | fs/ext4/super.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 312211ee05af..d4ca92aab514 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
| @@ -1300,9 +1300,11 @@ static int parse_options(char *options, struct super_block *sb, | |||
| 1300 | *journal_devnum = option; | 1300 | *journal_devnum = option; |
| 1301 | break; | 1301 | break; |
| 1302 | case Opt_journal_checksum: | 1302 | case Opt_journal_checksum: |
| 1303 | break; /* Kept for backwards compatibility */ | 1303 | set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM); |
| 1304 | break; | ||
| 1304 | case Opt_journal_async_commit: | 1305 | case Opt_journal_async_commit: |
| 1305 | set_opt(sbi->s_mount_opt, JOURNAL_ASYNC_COMMIT); | 1306 | set_opt(sbi->s_mount_opt, JOURNAL_ASYNC_COMMIT); |
| 1307 | set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM); | ||
| 1306 | break; | 1308 | break; |
| 1307 | case Opt_noload: | 1309 | case Opt_noload: |
| 1308 | set_opt(sbi->s_mount_opt, NOLOAD); | 1310 | set_opt(sbi->s_mount_opt, NOLOAD); |
| @@ -2759,14 +2761,20 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) | |||
| 2759 | goto failed_mount4; | 2761 | goto failed_mount4; |
| 2760 | } | 2762 | } |
| 2761 | 2763 | ||
| 2762 | jbd2_journal_set_features(sbi->s_journal, | 2764 | if (test_opt(sb, JOURNAL_ASYNC_COMMIT)) { |
| 2763 | JBD2_FEATURE_COMPAT_CHECKSUM, 0, 0); | 2765 | jbd2_journal_set_features(sbi->s_journal, |
| 2764 | if (test_opt(sb, JOURNAL_ASYNC_COMMIT)) | 2766 | JBD2_FEATURE_COMPAT_CHECKSUM, 0, |
| 2765 | jbd2_journal_set_features(sbi->s_journal, 0, 0, | ||
| 2766 | JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT); | 2767 | JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT); |
| 2767 | else | 2768 | } else if (test_opt(sb, JOURNAL_CHECKSUM)) { |
| 2769 | jbd2_journal_set_features(sbi->s_journal, | ||
| 2770 | JBD2_FEATURE_COMPAT_CHECKSUM, 0, 0); | ||
| 2768 | jbd2_journal_clear_features(sbi->s_journal, 0, 0, | 2771 | jbd2_journal_clear_features(sbi->s_journal, 0, 0, |
| 2769 | JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT); | 2772 | JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT); |
| 2773 | } else { | ||
| 2774 | jbd2_journal_clear_features(sbi->s_journal, | ||
| 2775 | JBD2_FEATURE_COMPAT_CHECKSUM, 0, | ||
| 2776 | JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT); | ||
| 2777 | } | ||
| 2770 | 2778 | ||
| 2771 | /* We have now updated the journal if required, so we can | 2779 | /* We have now updated the journal if required, so we can |
| 2772 | * validate the data journaling mode. */ | 2780 | * validate the data journaling mode. */ |
