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

From: Christophe Leroy
Date: Mon Jan 10 2022 - 03:30:54 EST


Hi Qu,

Le 05/01/2022 à 00:32, Qu Wenruo a écrit :
> Hi Christophe,
>
> I'm recently enhancing the subpage support for btrfs, and my current
> branch should solve the problem for btrfs to support larger page sizes.
>
> But unfortunately my current test environment can only provide page size
> with 64K or 4K, no 16K or 128K/256K support.
>
> Mind to test my new branch on 128K page size systems?
> (256K page size support is still lacking though, which will be addressed
> in the future)


I don't have any system with disk, I only use flashdisks with UBIFS
filesystem.

The reason why I did this commit was because of a build failure reported
by Kernel Build Robot, that's it.

Also note that powerpc doesn't have 128K pages. Only 4/16/64/256.

And for 256 it requires a special version of ld and binutils that I
don't have.

I have a board where I can do 16k pages, but again that board has no disk.

Christophe

>
> https://github.com/adam900710/linux/tree/metadata_subpage_switch
>
> Thanks,
> Qu
>
> On 2021/6/10 13:23, Christophe Leroy wrote:
>> With a config having PAGE_SIZE set to 256K, BTRFS build fails
>> with the following message
>>
>>   include/linux/compiler_types.h:326:38: error: call to
>> '__compiletime_assert_791' declared with attribute error: BUILD_BUG_ON
>> failed: (BTRFS_MAX_COMPRESSED % PAGE_SIZE) != 0
>>
>> BTRFS_MAX_COMPRESSED being 128K, BTRFS cannot support platforms with
>> 256K pages at the time being.
>>
>> There are two platforms that can select 256K pages:
>>   - hexagon
>>   - powerpc
>>
>> Disable BTRFS when 256K page size is selected.
>>
>> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>> Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
>> ---
>>   fs/btrfs/Kconfig | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig
>> index 68b95ad82126..520a0f6a7d9e 100644
>> --- a/fs/btrfs/Kconfig
>> +++ b/fs/btrfs/Kconfig
>> @@ -18,6 +18,8 @@ config BTRFS_FS
>>       select RAID6_PQ
>>       select XOR_BLOCKS
>>       select SRCU
>> +    depends on !PPC_256K_PAGES    # powerpc
>> +    depends on !PAGE_SIZE_256KB    # hexagon
>>
>>       help
>>         Btrfs is a general purpose copy-on-write filesystem with extents,