mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 09:33:31 +02:00
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:
parent
26343ca0df
commit
b1a49bd813
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user