mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 23:00:53 +07:00
ext4: don't use ext4_error in ext4_check_descriptors
Because ext4_check_descriptors is called at mount time you can't use ext4_error as it calls ext4_commit_sb, which since the sb isn't all the way initialized causes bad things to happen (ie a panic). This patch changes the ext4_error's to printk's to keep this problem from happening. Thanks much, Signed-off-by: Josef Bacik <jbacik@redhat.com> Signed-off-by: Mingming Cao <cmm@us.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
8753e88f1b
commit
c19204b0ae
@ -1484,36 +1484,33 @@ static int ext4_check_descriptors(struct super_block *sb)
|
|||||||
block_bitmap = ext4_block_bitmap(sb, gdp);
|
block_bitmap = ext4_block_bitmap(sb, gdp);
|
||||||
if (block_bitmap < first_block || block_bitmap > last_block)
|
if (block_bitmap < first_block || block_bitmap > last_block)
|
||||||
{
|
{
|
||||||
ext4_error (sb, "ext4_check_descriptors",
|
printk(KERN_ERR "EXT4-fs: ext4_check_descriptors: "
|
||||||
"Block bitmap for group %lu"
|
"Block bitmap for group %lu not in group "
|
||||||
" not in group (block %llu)!",
|
"(block %llu)!", i, block_bitmap);
|
||||||
i, block_bitmap);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
inode_bitmap = ext4_inode_bitmap(sb, gdp);
|
inode_bitmap = ext4_inode_bitmap(sb, gdp);
|
||||||
if (inode_bitmap < first_block || inode_bitmap > last_block)
|
if (inode_bitmap < first_block || inode_bitmap > last_block)
|
||||||
{
|
{
|
||||||
ext4_error (sb, "ext4_check_descriptors",
|
printk(KERN_ERR "EXT4-fs: ext4_check_descriptors: "
|
||||||
"Inode bitmap for group %lu"
|
"Inode bitmap for group %lu not in group "
|
||||||
" not in group (block %llu)!",
|
"(block %llu)!", i, inode_bitmap);
|
||||||
i, inode_bitmap);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
inode_table = ext4_inode_table(sb, gdp);
|
inode_table = ext4_inode_table(sb, gdp);
|
||||||
if (inode_table < first_block ||
|
if (inode_table < first_block ||
|
||||||
inode_table + sbi->s_itb_per_group - 1 > last_block)
|
inode_table + sbi->s_itb_per_group - 1 > last_block)
|
||||||
{
|
{
|
||||||
ext4_error (sb, "ext4_check_descriptors",
|
printk(KERN_ERR "EXT4-fs: ext4_check_descriptors: "
|
||||||
"Inode table for group %lu"
|
"Inode table for group %lu not in group "
|
||||||
" not in group (block %llu)!",
|
"(block %llu)!", i, inode_table);
|
||||||
i, inode_table);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!ext4_group_desc_csum_verify(sbi, i, gdp)) {
|
if (!ext4_group_desc_csum_verify(sbi, i, gdp)) {
|
||||||
ext4_error(sb, __func__,
|
printk(KERN_ERR "EXT4-fs: ext4_check_descriptors: "
|
||||||
"Checksum for group %lu failed (%u!=%u)\n",
|
"Checksum for group %lu failed (%u!=%u)\n",
|
||||||
i, le16_to_cpu(ext4_group_desc_csum(sbi, i,
|
i, le16_to_cpu(ext4_group_desc_csum(sbi, i,
|
||||||
gdp)), le16_to_cpu(gdp->bg_checksum));
|
gdp)), le16_to_cpu(gdp->bg_checksum));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!flexbg_flag)
|
if (!flexbg_flag)
|
||||||
|
Loading…
Reference in New Issue
Block a user