ext4: extract ext4_has_journal_option() from __ext4_fill_super()

Extract the ext4_has_journal_option() helper function to reduce code
duplication. No functional changes.

Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20250122110533.4116662-5-libaokun@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
Baokun Li 2025-01-22 19:05:28 +08:00 committed by Theodore Ts'o
parent 26343ca0df
commit b1a49bd813

View File

@ -5005,6 +5005,24 @@ static int ext4_check_journal_data_mode(struct super_block *sb)
return 0;
}
static const char *ext4_has_journal_option(struct super_block *sb)
{
struct ext4_sb_info *sbi = EXT4_SB(sb);
if (test_opt(sb, JOURNAL_ASYNC_COMMIT))
return "journal_async_commit";
if (test_opt2(sb, EXPLICIT_JOURNAL_CHECKSUM))
return "journal_checksum";
if (sbi->s_commit_interval != JBD2_DEFAULT_MAX_COMMIT_AGE*HZ)
return "commit=";
if (EXT4_MOUNT_DATA_FLAGS &
(sbi->s_mount_opt ^ sbi->s_def_mount_opt))
return "data=";
if (test_opt(sb, DATA_ERR_ABORT))
return "data_err=abort";
return NULL;
}
static int ext4_load_super(struct super_block *sb, ext4_fsblk_t *lsb,
int silent)
{
@ -5396,35 +5414,17 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
"suppressed and not mounted read-only");
goto failed_mount3a;
} else {
const char *journal_option;
/* Nojournal mode, all journal mount options are illegal */
if (test_opt(sb, JOURNAL_ASYNC_COMMIT)) {
ext4_msg(sb, KERN_ERR, "can't mount with "
"journal_async_commit, fs mounted w/o journal");
journal_option = ext4_has_journal_option(sb);
if (journal_option != NULL) {
ext4_msg(sb, KERN_ERR,
"can't mount with %s, fs mounted w/o journal",
journal_option);
goto failed_mount3a;
}
if (test_opt2(sb, EXPLICIT_JOURNAL_CHECKSUM)) {
ext4_msg(sb, KERN_ERR, "can't mount with "
"journal_checksum, fs mounted w/o journal");
goto failed_mount3a;
}
if (sbi->s_commit_interval != JBD2_DEFAULT_MAX_COMMIT_AGE*HZ) {
ext4_msg(sb, KERN_ERR, "can't mount with "
"commit=%lu, fs mounted w/o journal",
sbi->s_commit_interval / HZ);
goto failed_mount3a;
}
if (EXT4_MOUNT_DATA_FLAGS &
(sbi->s_mount_opt ^ sbi->s_def_mount_opt)) {
ext4_msg(sb, KERN_ERR, "can't mount with "
"data=, fs mounted w/o journal");
goto failed_mount3a;
}
if (test_opt(sb, DATA_ERR_ABORT)) {
ext4_msg(sb, KERN_ERR,
"can't mount with data_err=abort, fs mounted w/o journal");
goto failed_mount3a;
}
sbi->s_def_mount_opt &= ~EXT4_MOUNT_JOURNAL_CHECKSUM;
clear_opt(sb, JOURNAL_CHECKSUM);
clear_opt(sb, DATA_FLAGS);