[U-Boot] [PATCH 1/1] ext4: Refuse to mount filesystems with 64bit feature set

Tom Rini trini at konsulko.com
Sat Jul 23 00:04:18 CEST 2016

On Fri, Jul 22, 2016 at 05:59:11PM -0400, Tom Rini wrote:
> With e2fsprogs after 1.43 the 64bit and metadata_csum features are
> enabled by default.  The metadata_csum feature changes how
> ext4_group_desc->bg_checksum is calculated, which would break write
> support.  The 64bit feature however introduces changes such that it
> cannot be read by implementations that do not support it.  Since we do
> not support this, we must not mount it.
> Cc: Stephen Warren <swarren at nvidia.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Lukasz Majewski <l.majewski at samsung.com>
> Cc: Stefan Roese <sr at denx.de>
> Reported-by: Andrew Bradford <andrew.bradford at kodakalaris.com>
> Signed-off-by: Tom Rini <trini at konsulko.com>
> ---
> This problem has been seen in the wild a few times and reported in many
> places.  If you've also found this problem, and reported it, please feel
> free to reply with a Reported-by tag, patchwork will pick them up.
> Further, we should look at adding support for 64bit and metadata_csum
> features as they will be showing up a lot more often now, but that's
> also non-trivial.  A graceful fail like this is better than users being
> unable to load their files and being very puzzled.
> ---
>  fs/ext4/ext4_common.c | 10 ++++++++++
>  include/ext4fs.h      |  1 +
>  2 files changed, 11 insertions(+)
> diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
> index 40b798a..eb49fce 100644
> --- a/fs/ext4/ext4_common.c
> +++ b/fs/ext4/ext4_common.c
> @@ -2229,6 +2229,16 @@ int ext4fs_mount(unsigned part_length)
>  	if (__le16_to_cpu(data->sblock.magic) != EXT2_MAGIC)
>  		goto fail;
> +	/*
> +	 * The 64bit feature was enabled when metadata_csum was enabled
> +	 * and we do not support metadata_csum (and cannot reliably find
> +	 * files when it is set.  Refuse to mount.
> +	 */

OK, I wrote the comment before I wrote the commit message, which I wrote
after re-reading
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout.  I got stuck on
metadata_csum being the cause rather than 64bit being the true "we must
not read" problem.  I'll re-word the comment to:
The 64bit feature was enabled and this changes a number of data
structures such that we cannot find files.  Refuse to mount.

> +	if (data->sblock.feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) {
> +		printf("Unsupported feature found (64bit, possibly metadata_csum), not mounting\n");

And this to:
Unsupported feature found: 64bit.  Not mounting

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160722/f9f0da82/attachment.sig>

More information about the U-Boot mailing list