commit a70b020e5b2f1bbe3b759232852beaac4f0852b5 Author: Lokesh Nagappa Jaliminche AuthorDate: Fri Nov 25 16:17:09 2016 +0530 LU-8364 ext4: fixes for failover mode. When ext4 runs in failover mode with read-only disk, it may loose part of allocation updates and fail while mounting fs due to group descriptor checks before journal replay not being valid after journal replay is complete. Don't produce panics with on disk checks in read-only mode. Seagate-bug-id: MRP-797 Change-Id: I54bee3a0aeb9a15f5ee2a79f7a2a2a905f19af1a Signed-off-by: Alexey Lyashkov Signed-off-by: Lokesh Nagappa Jaliminche Reviewed-on: https://review.whamcloud.com/21141 Index: linux-4.18.0-32.el8.x86_64/fs/ext4/super.c =================================================================== --- linux-4.18.0-32.el8.x86_64.orig/fs/ext4/super.c +++ linux-4.18.0-32.el8.x86_64/fs/ext4/super.c @@ -4092,11 +4092,6 @@ static int ext4_fill_super(struct super_ } } sbi->s_gdb_count = db_count; - if (!ext4_check_descriptors(sb, logical_sb_block, &first_not_zeroed)) { - ext4_msg(sb, KERN_ERR, "group descriptors corrupted!"); - ret = -EFSCORRUPTED; - goto failed_mount2; - } timer_setup(&sbi->s_err_report, print_daily_error_info, 0); @@ -4238,6 +4233,13 @@ static int ext4_fill_super(struct super_ sbi->s_journal->j_commit_callback = ext4_journal_commit_callback; no_journal: + + if (!ext4_check_descriptors(sb, logical_sb_block, &first_not_zeroed)) { + ext4_msg(sb, KERN_ERR, "group descriptors corrupted!"); + ret = -EFSCORRUPTED; + goto failed_mount_wq; + } + if (!test_opt(sb, NO_MBCACHE)) { sbi->s_ea_block_cache = ext4_xattr_create_cache(); if (!sbi->s_ea_block_cache) {