Re: [PATCH] erofs: preserve LZMA decoders on resize failure

From: Gao Xiang

Date: Tue Sep 01 2026 - 22:30:56 EST


On Sun, Aug 30, 2026 at 04:11:09PM +0530, Nikhil Gurudasani wrote:
> The pool-resize path frees each stream's old decoder before allocating
> its replacement. If an allocation fails after some streams have already
> been replaced, the failed stream is put back on the list with state ==
> NULL. z_erofs_lzma_max_dictsize is still advanced as if the whole
> pool had been resized.
>
> An existing LZMA mount can select the broken stream and pass
> NULL to xz_dec_microlzma_reset(). A retry at the same size also
> skip another resize attempt. Since the global maximum was advanced,
> thus, the invalid state is left unrepaired.
>
> Allocate each replacement before freeing the old decoder, temporarily
> retaining one old decoder during allocation. Stop at the first failure
> and advance z_erofs_lzma_max_dictsize only after all streams satisfy
> the request.
>
> Record each stream's dictionary capacity so retries can skip streams
> already enlarged before a partial failure.
>
> Fixes: 622ceaddb764 ("erofs: lzma compression support")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Nikhil Gurudasani <nikhilgurudasani314@xxxxxxxxx>

Reviewed-by: Gao Xiang <xiang@xxxxxxxxxx>

Thanks,
Gao Xiang