aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/ext4/super.c13
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
1142static const match_table_t tokens = { 1142static 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 "