On 22.04.2020 12:43, Arnaud Ferraris wrote: > As u-boot doesn't support the metadata_csum feature, writing to a > filesystem with this feature enabled will fail, as expected. However, > during the process, a journal state check is performed, which could > result in: > - a fs recovery if the fs wasn't umounted properly > - the fs being marked dirty > > Both these cases result in a superblock change, leading to a mismatch > between the superblock checksum and its contents. Therefore, Linux will > consider the filesystem heavily corrupted and will require e2fsck to be > run manually to boot. > > By bypassing the journal state check, this patch ensures the superblock > won't be corrupted if the filesystem has metadata_csum feature enabled. > > Signed-off-by: Arnaud Ferraris <arnaud.ferra...@collabora.com> Acked-by: Marek Szyprowski <m.szyprow...@samsung.com> > --- > > fs/ext4/ext4_journal.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/ext4/ext4_journal.c b/fs/ext4/ext4_journal.c > index 3559daf11d..f8524e5a99 100644 > --- a/fs/ext4/ext4_journal.c > +++ b/fs/ext4/ext4_journal.c > @@ -409,6 +409,9 @@ int ext4fs_check_journal_state(int recovery_flag) > char *temp_buff1 = NULL; > struct ext_filesystem *fs = get_fs(); > > + if (le32_to_cpu(fs->sb->feature_ro_compat) & > EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) > + return 0; > + > temp_buff = zalloc(fs->blksz); > if (!temp_buff) > return -ENOMEM;
Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland