From: Ye Bin <yebin10@xxxxxxxxxx> Diff v4 Vs v3: After journal replay recover 'es->s_state' error flag like recover error info. Diff v3 Vs v2: Only fix fs error flag lost when previous journal errno is not record in disk. As this may lead to drop orphan list, however fs not record error flag, then fsck will not repair deeply. Diff v2 vs v1: Move call 'j_replay_prepare_callback' and 'j_replay_end_callback' from ext4_load_journal() to jbd2_journal_recover(). When do fault injection test, got issue as follows: EXT4-fs (dm-5): warning: mounting fs with errors, running e2fsck is recommended EXT4-fs (dm-5): Errors on filesystem, clearing orphan list. EXT4-fs (dm-5): recovery complete EXT4-fs (dm-5): mounted filesystem with ordered data mode. Opts: data_err=abort,errors=remount-ro EXT4-fs (dm-5): recovery complete EXT4-fs (dm-5): mounted filesystem with ordered data mode. Opts: data_err=abort,errors=remount-ro Without do file system check, file system is clean when do second mount. Theoretically, the kernel will not clear fs error flag. In errors=remount-ro mode the last super block is commit directly. So super block in journal is not uptodate. When do jounral recovery, the uptodate super block will be covered by jounral data. If super block submit all failed after recover journal, then file system error flag is lost. When do "fsck -a" couldn't repair file system deeply. To solve above issue we need to do extra handle when do super block journal recovery. Ye Bin (2): ext4: commit super block if fs record error when journal record without error ext4: make sure fs error flag setted before clear journal error fs/ext4/super.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) -- 2.31.1