diff options
-rw-r--r-- | fs/ext4/super.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index b643009fddfe..3bd2982da36d 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -1136,7 +1136,7 @@ enum { | |||
1136 | Opt_inode_readahead_blks, Opt_journal_ioprio, | 1136 | Opt_inode_readahead_blks, Opt_journal_ioprio, |
1137 | Opt_dioread_nolock, Opt_dioread_lock, | 1137 | Opt_dioread_nolock, Opt_dioread_lock, |
1138 | Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable, | 1138 | Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable, |
1139 | Opt_max_dir_size_kb, | 1139 | Opt_max_dir_size_kb, Opt_nojournal_checksum, |
1140 | }; | 1140 | }; |
1141 | 1141 | ||
1142 | static const match_table_t tokens = { | 1142 | static const match_table_t tokens = { |
@@ -1170,6 +1170,7 @@ static const match_table_t tokens = { | |||
1170 | {Opt_journal_dev, "journal_dev=%u"}, | 1170 | {Opt_journal_dev, "journal_dev=%u"}, |
1171 | {Opt_journal_path, "journal_path=%s"}, | 1171 | {Opt_journal_path, "journal_path=%s"}, |
1172 | {Opt_journal_checksum, "journal_checksum"}, | 1172 | {Opt_journal_checksum, "journal_checksum"}, |
1173 | {Opt_nojournal_checksum, "nojournal_checksum"}, | ||
1173 | {Opt_journal_async_commit, "journal_async_commit"}, | 1174 | {Opt_journal_async_commit, "journal_async_commit"}, |
1174 | {Opt_abort, "abort"}, | 1175 | {Opt_abort, "abort"}, |
1175 | {Opt_data_journal, "data=journal"}, | 1176 | {Opt_data_journal, "data=journal"}, |
@@ -1351,6 +1352,8 @@ static const struct mount_opts { | |||
1351 | MOPT_EXT4_ONLY | MOPT_SET | MOPT_EXPLICIT}, | 1352 | MOPT_EXT4_ONLY | MOPT_SET | MOPT_EXPLICIT}, |
1352 | {Opt_nodelalloc, EXT4_MOUNT_DELALLOC, | 1353 | {Opt_nodelalloc, EXT4_MOUNT_DELALLOC, |
1353 | MOPT_EXT4_ONLY | MOPT_CLEAR}, | 1354 | MOPT_EXT4_ONLY | MOPT_CLEAR}, |
1355 | {Opt_nojournal_checksum, EXT4_MOUNT_JOURNAL_CHECKSUM, | ||
1356 | MOPT_EXT4_ONLY | MOPT_CLEAR}, | ||
1354 | {Opt_journal_checksum, EXT4_MOUNT_JOURNAL_CHECKSUM, | 1357 | {Opt_journal_checksum, EXT4_MOUNT_JOURNAL_CHECKSUM, |
1355 | MOPT_EXT4_ONLY | MOPT_SET}, | 1358 | MOPT_EXT4_ONLY | MOPT_SET}, |
1356 | {Opt_journal_async_commit, (EXT4_MOUNT_JOURNAL_ASYNC_COMMIT | | 1359 | {Opt_journal_async_commit, (EXT4_MOUNT_JOURNAL_ASYNC_COMMIT | |
@@ -4844,6 +4847,14 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data) | |||
4844 | goto restore_opts; | 4847 | goto restore_opts; |
4845 | } | 4848 | } |
4846 | 4849 | ||
4850 | if ((old_opts.s_mount_opt & EXT4_MOUNT_JOURNAL_CHECKSUM) ^ | ||
4851 | test_opt(sb, JOURNAL_CHECKSUM)) { | ||
4852 | ext4_msg(sb, KERN_ERR, "changing journal_checksum " | ||
4853 | "during remount not supported"); | ||
4854 | err = -EINVAL; | ||
4855 | goto restore_opts; | ||
4856 | } | ||
4857 | |||
4847 | if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) { | 4858 | if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) { |
4848 | if (test_opt2(sb, EXPLICIT_DELALLOC)) { | 4859 | if (test_opt2(sb, EXPLICIT_DELALLOC)) { |
4849 | ext4_msg(sb, KERN_ERR, "can't mount with " | 4860 | ext4_msg(sb, KERN_ERR, "can't mount with " |