jbd2: checking valid features early in journal_get_superblock()
journal_get_superblock() is used to check validity of the jounal supberblock, so move the features checks from jbd2_journal_load() to journal_get_superblock(). Signed-off-by: Zhang Yi <yi.zhang@huawei.com> Reviewed-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20230811063610.2980059-5-yi.zhang@huaweicloud.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
9600f3e5cf
commit
e4adf8b837
|
@ -1398,6 +1398,21 @@ static int journal_get_superblock(journal_t *journal)
|
|||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
* If this is a V2 superblock, then we have to check the
|
||||
* features flags on it.
|
||||
*/
|
||||
if (!jbd2_format_support_feature(journal))
|
||||
return 0;
|
||||
|
||||
if ((sb->s_feature_ro_compat &
|
||||
~cpu_to_be32(JBD2_KNOWN_ROCOMPAT_FEATURES)) ||
|
||||
(sb->s_feature_incompat &
|
||||
~cpu_to_be32(JBD2_KNOWN_INCOMPAT_FEATURES))) {
|
||||
printk(KERN_WARNING "JBD2: Unrecognised features on journal\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (jbd2_has_feature_csum2(journal) &&
|
||||
jbd2_has_feature_csum3(journal)) {
|
||||
/* Can't have checksum v2 and v3 at the same time! */
|
||||
|
@ -2059,21 +2074,6 @@ int jbd2_journal_load(journal_t *journal)
|
|||
int err;
|
||||
journal_superblock_t *sb = journal->j_superblock;
|
||||
|
||||
/*
|
||||
* If this is a V2 superblock, then we have to check the
|
||||
* features flags on it.
|
||||
*/
|
||||
if (jbd2_format_support_feature(journal)) {
|
||||
if ((sb->s_feature_ro_compat &
|
||||
~cpu_to_be32(JBD2_KNOWN_ROCOMPAT_FEATURES)) ||
|
||||
(sb->s_feature_incompat &
|
||||
~cpu_to_be32(JBD2_KNOWN_INCOMPAT_FEATURES))) {
|
||||
printk(KERN_WARNING
|
||||
"JBD2: Unrecognised features on journal\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a slab for this blocksize
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue