Re: [PATCH] btrfs: Disable BTRFS on platforms having 256K pages

From: Chris Mason
Date: Fri Jun 11 2021 - 12:56:55 EST



> On Jun 11, 2021, at 9:21 AM, David Sterba <dsterba@xxxxxxx> wrote:
>
> On Fri, Jun 11, 2021 at 12:58:58PM +0000, Chris Mason wrote:
>>> On Jun 10, 2021, at 12:20 PM, David Sterba <dsterba@xxxxxxx> wrote:
>>> On Thu, Jun 10, 2021 at 04:50:09PM +0200, Christophe Leroy wrote:
>>>> Le 10/06/2021 à 15:54, Chris Mason a écrit :
>>>>>> On Jun 10, 2021, at 1:23 AM, Christophe Leroy <christophe.leroy@xxxxxxxxxx> wrote:
>>> And there's no such thing like "just bump BTRFS_MAX_COMPRESSED to 256K".
>>> The constant is part of on-disk format for lzo and otherwise changing it
>>> would impact performance so this would need proper evaluation.
>>
>> Sorry, how is it baked into LZO? It definitely will have performance implications, I agree there.
>
> lzo_decompress_bio:
>
> 309 /*
> 310 * Compressed data header check.
> 311 *
> 312 * The real compressed size can't exceed the maximum extent length, and
> 313 * all pages should be used (whole unused page with just the segment
> 314 * header is not possible). If this happens it means the compressed
> 315 * extent is corrupted.
> 316 */
> 317 if (tot_len > min_t(size_t, BTRFS_MAX_COMPRESSED, srclen) ||
> 318 tot_len < srclen - PAGE_SIZE) {
> 319 ret = -EUCLEAN;
> 320 goto done;
> 321 }

Ah I see, so going back to an old LZO kernel will get upset. Ok, fair enough. So if we want to bump this for other reasons, we’ll need to make an LZO max size to maintain compatibility.

-chris