在 2021年1月19日,23:43,Gao Xiang <hsiangkao@redhat.com> 写道:

Hi Weiwen,

On Tue, Jan 19, 2021 at 02:02:56PM +0800, 胡玮文 wrote:
Hi Xiang,

After further investgate, this bug will not reveal in any released version of
mkfs.erofs. Previous patch v5 [1] will map all allocated bb when erofs_mapbh()
is called on an already mapped bb, which triggers this bug. before that patch,
under the same condition, __erofs_battach() will only be called on bb which is
not mapped, thus no need to update `tail_blkaddr'.

Good to know this, thanks! I haven't looked into that (I will test it this
weekend.) IMO, although this is not a regression, yet it seems it's potential
harmful if we didn't notice this... So I think a proper testcase is still
useful to look after this... If you have extra time, could you help on it?

Hi Xiang,

I’m working on this. I have written a test case for this. And I’m also working on setting up GitHub actions to run tests automatically. So far, I’ve got uncompressed tests works, but when lz4 is enable, all test (except 001) fail. I have not found out why. You may see my progress at https://github.com/huww98/erofs-utils/tree/experimental-tests. I will send patches once everything is sorted out.

Also, without the detail of this, I think the fix might be folded into
the original patchset (could you resend it?). In addition, I think after

You mean add a new commit [PATCH v6 3/3], or merge it into [PATCH v7 2/2]? I send it as a separate patch set because it may be merged independent of the cache.c optimization.

last_mapped_block is introduced, we might not need tail_blkaddr anymore,
not sure. But I'm very cautious about this in case of introducing any
new regression...

I think we still need it, because already mapped bb may be dropped, last_map_block does not always reflect tail_blkaddr.

Hu Weiwen

Thanks,
Gao Xiang


[1]: https://lore.kernel.org/linux-erofs/20210118123431.22533-1-sehuww@mail.scut.edu.cn/

Hu Weiwen