Re: [PATCH 08/14] zram: check that backends array has at least one backend

From: Sergey Senozhatsky
Date: Sun May 05 2024 - 00:40:14 EST


On (24/05/04 16:10), Andrew Morton wrote:
> > On (24/05/04 14:54), kernel test robot wrote:
> > > | ~~~~~~~~~~~~~~~~~~~~~~
> > > >> drivers/block/zram/zcomp.c:214:2: error: call to '__compiletime_assert_285' declared with 'error' attribute: BUILD_BUG_ON failed: ARRAY_SIZE(backends) <= 1
> > > 214 | BUILD_BUG_ON(ARRAY_SIZE(backends) <= 1);
> > > | ^
> >
> > So this is what that BUILD_BUG_ON() is supposed to catch. You don't
> > have any backends selected in your .config:
> >
> > # CONFIG_ZRAM_BACKEND_LZO is not set
> > # CONFIG_ZRAM_BACKEND_LZ4 is not set
> > # CONFIG_ZRAM_BACKEND_LZ4HC is not set
> > # CONFIG_ZRAM_BACKEND_ZSTD is not set
> > # CONFIG_ZRAM_BACKEND_DEFLATE is not set
> > CONFIG_ZRAM_DEF_COMP="unset-value"
> >
> > Which is invalid configuration because it means that zram has no
> > compression enabled.
>
> We don't want s390 defconfig to be doing this!
>
> I guess just pick one if none were selected.

I'm looking into it.

We used to have "zram depends on crypto compression algorithm"

: config ZRAM
: tristate "Compressed RAM block device support"
: depends on BLOCK && SYSFS && MMU
: depends on CRYPTO_LZO || CRYPTO_ZSTD || CRYPTO_LZ4 || CRYPTO_LZ4HC || CRYPTO_842

I sort of wanted to change it and make zram select compression algorithm,
instead of depending on some comp algorithm being already selected.
But I can probably keep the old behaviour

: config ZRAM
: tristate "Compressed RAM block device support"
: depends on BLOCK && SYSFS && MMU
: select ZSMALLOC
: depends on (LZO_COMPRESS && LZO_DECOMPRESS) || \
: (LZ4_COMPRESS && LZ4_DECOMPRESS) || \
: (LZ4HC_COMPRESS && LZ4_DECOMPRESS) || \
: (ZSTD_COMPRESS && ZSTD_DECOMPRESS) || \
: (ZLIB_DEFLATE && ZLIB_INFLATE)