Re: [PATCH] erofs: fix the per-CPU buffer decompression for small output size

From: Gao Xiang
Date: Wed Oct 13 2021 - 12:03:08 EST


On Wed, Oct 13, 2021 at 09:10:05PM +0800, Yue Hu wrote:
> Hi Xiang,
>
> On Wed, 13 Oct 2021 19:51:55 +0800
> Gao Xiang <hsiangkao@xxxxxxxxxxxxxxxxx> wrote:
>
> > Hi Yue,
> >
> > On Wed, Oct 13, 2021 at 05:29:05PM +0800, Yue Hu wrote:
> > > From: Yue Hu <huyue2@xxxxxxxxxx>
> > >
> > > Note that z_erofs_lz4_decompress() will return a positive value if
> > > decompression succeeds. However, we do not copy_from_pcpubuf() due
> > > to !ret. Let's fix it.
> > >
> > > Signed-off-by: Yue Hu <huyue2@xxxxxxxxxx>
> >
> > Thanks for catching this. This is a valid issue, but it has no real
> > impact to the current kernels since such pcluster in practice will be
> > !inplace_io and trigger "if (nrpages_out == 1 && !rq->inplace_io) {"
> > above for upstream strategies.
> >
> > Our customized lz4 implementation will return 0 if success instead, so
> > it has no issue to our previous products as well.
>
> Yes, i just find the issue when i try to implement a new feature of
> tail-packing inline compressed data. No problem in my current version.

Yeah, please help update the return value of z_erofs_lz4_decompress()
and get rid of such unneeded fast path.

Thanks,
Gao Xiang

>
> Thanks.
>
> >
> > For such cases, how about updating z_erofs_lz4_decompress() to return
> > 0 if success instead rather than outputsize. Since I'll return 0 if
> > success for LZMA as well.
> >
> > Thanks,
> > Gao Xiang
>