From: Gao Xiang <hsiangkao@linux.alibaba.com>
To: Zhan Xusheng <zhanxusheng1024@gmail.com>, Gao Xiang <xiang@kernel.org>
Cc: linux-kernel@vger.kernel.org, Zhan Xusheng <zhanxusheng@xiaomi.com>
Subject: Re: [PATCH] erofs: fix EFSCORRUPTED on multi-algorithm images in z_erofs_map_sanity_check()
Date: Mon, 1 Jun 2026 16:56:11 +0800 [thread overview]
Message-ID: <ab974d6c-aefc-4e0d-b3f2-c8893aef0033@linux.alibaba.com> (raw)
In-Reply-To: <20260601085136.3124646-1-zhanxusheng@xiaomi.com>
On 2026/6/1 16:51, Zhan Xusheng wrote:
> Commit a5242d37c83a ("erofs: error out obviously illegal extents in
> advance") changed the per-extent algorithm presence check from "is the
> bit set" to "is the only bit set":
> - !(sbi->available_compr_algs & (1 << map->m_algorithmformat))
> + (sbi->available_compr_algs ^ BIT(map->m_algorithmformat))
>
> `available_compr_algs` is a bitmap of every compression algorithm
> available in the image (z_erofs_parse_cfgs() iterates it with
> for_each_set_bit()), so an image that enables more than one algorithm
> has multiple bits set. XOR is zero only when the bitmap is exactly
> BIT(map->m_algorithmformat); for any image with two or more algorithms
> the test is non-zero for every extent and the read fails with
> -EFSCORRUPTED ("inconsistent algorithmtype %u").
>
> Reproducer (mkfs.erofs from erofs-utils 1.7.1):
> $ mkdir src
> $ yes A | head -c 100K > src/a
> $ head -c 64K /dev/zero > src/b
> $ mkfs.erofs -zlz4:deflate multi.erofs src
> $ mount -t erofs -o loop multi.erofs /mnt
> $ cat /mnt/a >/dev/null
> cat: /mnt/a: Structure needs cleaning
> $ dmesg | tail
> erofs (device loop0): inconsistent algorithmtype 0 for nid 46
> erofs (device loop0): read error -117 @ 0 of nid 46
>
> The erofs on-disk format (Z_EROFS_COMPRESSION_MAX = 4 with LZ4, LZMA,
> DEFLATE, ZSTD) and the kernel parser explicitly support
> multi-algorithm images, and erofs-utils 1.7.1 generates them via the
> "-z X:Y" syntax.
>
> Restore the original per-bit presence check.
>
> Fixes: a5242d37c83a ("erofs: error out obviously illegal extents in advance")
> Signed-off-by: Zhan Xusheng <zhanxusheng@xiaomi.com>
Thanks, that is an awkward regression:
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Thanks,
Gao Xiang
prev parent reply other threads:[~2026-06-01 8:56 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-01 8:51 Zhan Xusheng
2026-06-01 8:56 ` Gao Xiang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ab974d6c-aefc-4e0d-b3f2-c8893aef0033@linux.alibaba.com \
--to=hsiangkao@linux.alibaba.com \
--cc=linux-kernel@vger.kernel.org \
--cc=xiang@kernel.org \
--cc=zhanxusheng1024@gmail.com \
--cc=zhanxusheng@xiaomi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®