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

From: Sergey Senozhatsky
Date: Sun May 05 2024 - 23:22:25 EST


On (24/05/05 15:48), Sergey Senozhatsky wrote:
> On (24/05/05 14:13), Sergey Senozhatsky wrote:
> > On (24/05/05 13:39), Sergey Senozhatsky wrote:
> > [..]
> > > > I guess just pick one if none were selected.
> >
> > How do I pick one if none were selected? Does Kconfig support
> > something like that?
>
> This triggers Kconfig error:
>
> config ZRAM_EMPTY_BACKENDS_FIXUP
> bool
> depends on ZRAM && !ZRAM_BACKEND_LZO && !ZRAM_BACKEND_LZ4 && \
> !ZRAM_BACKEND_LZ4HC && !ZRAM_BACKEND_ZSTD && \
> !ZRAM_BACKEND_DEFLATE
> select ZRAM_BACKEND_LZO
>
>
> drivers/block/zram/Kconfig:17:error: recursive dependency detected!
> drivers/block/zram/Kconfig:17: symbol ZRAM_BACKEND_LZO is selected by ZRAM_EMPTY_BACKENDS_FIXUP
> drivers/block/zram/Kconfig:52: symbol ZRAM_EMPTY_BACKENDS_FIXUP depends on ZRAM_BACKEND_LZO
>
>
> I'm a little surprised by this - EMPTY_BACKENDS_FIXUP does not depend
> on ZRAM_BACKEND_LZO, it depends on NOT ZRAM_BACKEND_LZO.
>
> Let me Cc linux-kbuild. Kbuild folks, how do I workaround this?

Is this how one does it?

config ZRAM_BACKEND_LZO
bool "lzo and lzo-rle compression support"
depends on ZRAM
default y if !ZRAM_BACKEND_LZ4 && !ZRAM_BACKEND_LZ4HC && \
!ZRAM_BACKEND_ZSTD && !ZRAM_BACKEND_DEFLATE
default n
select LZO_COMPRESS
select LZO_DECOMPRESS


User still can select N and then we'll have empty backends, but
at least default is Y if none of the algorithms were selected.
Is it good enough?