mirror of https://gitee.com/openkylin/linux.git
ext4: create nojournal_checksum mount option
Create a mount option to disable journal checksumming (because the metadata_csum feature turns it on by default now), and fix remount not to allow changing the journal checksumming option, since changing the mount options has no effect on the journal. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
58d86a50ee
commit
c6d3d56dd0
|
@ -1136,7 +1136,7 @@ enum {
|
|||
Opt_inode_readahead_blks, Opt_journal_ioprio,
|
||||
Opt_dioread_nolock, Opt_dioread_lock,
|
||||
Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable,
|
||||
Opt_max_dir_size_kb,
|
||||
Opt_max_dir_size_kb, Opt_nojournal_checksum,
|
||||
};
|
||||
|
||||
static const match_table_t tokens = {
|
||||
|
@ -1170,6 +1170,7 @@ static const match_table_t tokens = {
|
|||
{Opt_journal_dev, "journal_dev=%u"},
|
||||
{Opt_journal_path, "journal_path=%s"},
|
||||
{Opt_journal_checksum, "journal_checksum"},
|
||||
{Opt_nojournal_checksum, "nojournal_checksum"},
|
||||
{Opt_journal_async_commit, "journal_async_commit"},
|
||||
{Opt_abort, "abort"},
|
||||
{Opt_data_journal, "data=journal"},
|
||||
|
@ -1351,6 +1352,8 @@ static const struct mount_opts {
|
|||
MOPT_EXT4_ONLY | MOPT_SET | MOPT_EXPLICIT},
|
||||
{Opt_nodelalloc, EXT4_MOUNT_DELALLOC,
|
||||
MOPT_EXT4_ONLY | MOPT_CLEAR},
|
||||
{Opt_nojournal_checksum, EXT4_MOUNT_JOURNAL_CHECKSUM,
|
||||
MOPT_EXT4_ONLY | MOPT_CLEAR},
|
||||
{Opt_journal_checksum, EXT4_MOUNT_JOURNAL_CHECKSUM,
|
||||
MOPT_EXT4_ONLY | MOPT_SET},
|
||||
{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)
|
|||
goto restore_opts;
|
||||
}
|
||||
|
||||
if ((old_opts.s_mount_opt & EXT4_MOUNT_JOURNAL_CHECKSUM) ^
|
||||
test_opt(sb, JOURNAL_CHECKSUM)) {
|
||||
ext4_msg(sb, KERN_ERR, "changing journal_checksum "
|
||||
"during remount not supported");
|
||||
err = -EINVAL;
|
||||
goto restore_opts;
|
||||
}
|
||||
|
||||
if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) {
|
||||
if (test_opt2(sb, EXPLICIT_DELALLOC)) {
|
||||
ext4_msg(sb, KERN_ERR, "can't mount with "
|
||||
|
|
Loading…
Reference in New Issue