[PATCH] fs: ext4: skip journal state if fs has metadata_csum
Marek Szyprowski
m.szyprowski at samsung.com
Wed Apr 22 12:56:36 CEST 2020
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.ferraris at collabora.com>
Acked-by: Marek Szyprowski <m.szyprowski at 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
More information about the U-Boot
mailing list