* Re: [PATCH 08/14] zram: check that backends array has at least one backend
[not found] <20240503091823.3616962-9-senozhatsky@chromium.org>
@ 2024-05-04 6:54 ` kernel test robot
2024-05-04 7:14 ` Sergey Senozhatsky
2024-05-04 7:15 ` kernel test robot
1 sibling, 1 reply; 10+ messages in thread
From: kernel test robot @ 2024-05-04 6:54 UTC (permalink / raw
To: Sergey Senozhatsky, Andrew Morton, Minchan Kim
Cc: llvm, oe-kbuild-all, Linux Memory Management List, linux-kernel,
linux-block, Sergey Senozhatsky
Hi Sergey,
kernel test robot noticed the following build errors:
[auto build test ERROR on axboe-block/for-next]
[also build test ERROR on akpm-mm/mm-everything linus/master v6.9-rc6 next-20240503]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Sergey-Senozhatsky/zram-move-from-crypto-API-to-custom-comp-backends-API/20240503-172335
base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
patch link: https://lore.kernel.org/r/20240503091823.3616962-9-senozhatsky%40chromium.org
patch subject: [PATCH 08/14] zram: check that backends array has at least one backend
config: s390-defconfig (https://download.01.org/0day-ci/archive/20240504/202405041440.UTBQZAaf-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 37ae4ad0eef338776c7e2cffb3896153d43dcd90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240504/202405041440.UTBQZAaf-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405041440.UTBQZAaf-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/block/zram/zcomp.c:12:
In file included from include/linux/cpu.h:17:
In file included from include/linux/node.h:18:
In file included from include/linux/device.h:32:
In file included from include/linux/device/driver.h:21:
In file included from include/linux/module.h:19:
In file included from include/linux/elf.h:6:
In file included from arch/s390/include/asm/elf.h:173:
In file included from arch/s390/include/asm/mmu_context.h:11:
In file included from arch/s390/include/asm/pgalloc.h:18:
In file included from include/linux/mm.h:2208:
include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:536:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
537 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> 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);
| ^
include/linux/build_bug.h:50:2: note: expanded from macro 'BUILD_BUG_ON'
50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
| ^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^
include/linux/compiler_types.h:449:2: note: expanded from macro 'compiletime_assert'
449 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:437:2: note: expanded from macro '_compiletime_assert'
437 | __compiletime_assert(condition, msg, prefix, suffix)
| ^
include/linux/compiler_types.h:430:4: note: expanded from macro '__compiletime_assert'
430 | prefix ## suffix(); \
| ^
<scratch space>:97:1: note: expanded from here
97 | __compiletime_assert_285
| ^
5 warnings and 1 error generated.
vim +214 drivers/block/zram/zcomp.c
202
203 struct zcomp *zcomp_create(const char *alg)
204 {
205 struct zcomp *comp;
206 int error;
207
208 /*
209 * The backends array has a sentinel NULL value, so the minimum
210 * size is 1. In order to be valid the array, apart from the
211 * sentinel NULL element, should have at least one compression
212 * backend selected.
213 */
> 214 BUILD_BUG_ON(ARRAY_SIZE(backends) <= 1);
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 08/14] zram: check that backends array has at least one backend
2024-05-04 6:54 ` [PATCH 08/14] zram: check that backends array has at least one backend kernel test robot
@ 2024-05-04 7:14 ` Sergey Senozhatsky
2024-05-04 23:10 ` Andrew Morton
0 siblings, 1 reply; 10+ messages in thread
From: Sergey Senozhatsky @ 2024-05-04 7:14 UTC (permalink / raw
To: kernel test robot
Cc: Sergey Senozhatsky, Andrew Morton, Minchan Kim, llvm,
oe-kbuild-all, Linux Memory Management List, linux-kernel,
linux-block
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.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 08/14] zram: check that backends array has at least one backend
[not found] <20240503091823.3616962-9-senozhatsky@chromium.org>
2024-05-04 6:54 ` [PATCH 08/14] zram: check that backends array has at least one backend kernel test robot
@ 2024-05-04 7:15 ` kernel test robot
1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2024-05-04 7:15 UTC (permalink / raw
To: Sergey Senozhatsky, Andrew Morton, Minchan Kim
Cc: oe-kbuild-all, Linux Memory Management List, linux-kernel,
linux-block, Sergey Senozhatsky
Hi Sergey,
kernel test robot noticed the following build errors:
[auto build test ERROR on axboe-block/for-next]
[also build test ERROR on akpm-mm/mm-everything linus/master v6.9-rc6 next-20240503]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Sergey-Senozhatsky/zram-move-from-crypto-API-to-custom-comp-backends-API/20240503-172335
base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
patch link: https://lore.kernel.org/r/20240503091823.3616962-9-senozhatsky%40chromium.org
patch subject: [PATCH 08/14] zram: check that backends array has at least one backend
config: x86_64-rhel-8.3 (https://download.01.org/0day-ci/archive/20240504/202405041458.j3L25KZg-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240504/202405041458.j3L25KZg-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405041458.j3L25KZg-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from <command-line>:
drivers/block/zram/zcomp.c: In function 'zcomp_create':
>> include/linux/compiler_types.h:449:45: error: call to '__compiletime_assert_419' declared with attribute error: BUILD_BUG_ON failed: ARRAY_SIZE(backends) <= 1
449 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:430:25: note: in definition of macro '__compiletime_assert'
430 | prefix ## suffix(); \
| ^~~~~~
include/linux/compiler_types.h:449:9: note: in expansion of macro '_compiletime_assert'
449 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
| ^~~~~~~~~~~~~~~~
drivers/block/zram/zcomp.c:214:9: note: in expansion of macro 'BUILD_BUG_ON'
214 | BUILD_BUG_ON(ARRAY_SIZE(backends) <= 1);
| ^~~~~~~~~~~~
vim +/__compiletime_assert_419 +449 include/linux/compiler_types.h
eb5c2d4b45e3d2 Will Deacon 2020-07-21 435
eb5c2d4b45e3d2 Will Deacon 2020-07-21 436 #define _compiletime_assert(condition, msg, prefix, suffix) \
eb5c2d4b45e3d2 Will Deacon 2020-07-21 437 __compiletime_assert(condition, msg, prefix, suffix)
eb5c2d4b45e3d2 Will Deacon 2020-07-21 438
eb5c2d4b45e3d2 Will Deacon 2020-07-21 439 /**
eb5c2d4b45e3d2 Will Deacon 2020-07-21 440 * compiletime_assert - break build and emit msg if condition is false
eb5c2d4b45e3d2 Will Deacon 2020-07-21 441 * @condition: a compile-time constant condition to check
eb5c2d4b45e3d2 Will Deacon 2020-07-21 442 * @msg: a message to emit if condition is false
eb5c2d4b45e3d2 Will Deacon 2020-07-21 443 *
eb5c2d4b45e3d2 Will Deacon 2020-07-21 444 * In tradition of POSIX assert, this macro will break the build if the
eb5c2d4b45e3d2 Will Deacon 2020-07-21 445 * supplied condition is *false*, emitting the supplied error message if the
eb5c2d4b45e3d2 Will Deacon 2020-07-21 446 * compiler has support to do so.
eb5c2d4b45e3d2 Will Deacon 2020-07-21 447 */
eb5c2d4b45e3d2 Will Deacon 2020-07-21 448 #define compiletime_assert(condition, msg) \
eb5c2d4b45e3d2 Will Deacon 2020-07-21 @449 _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
eb5c2d4b45e3d2 Will Deacon 2020-07-21 450
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 08/14] zram: check that backends array has at least one backend
2024-05-04 7:14 ` Sergey Senozhatsky
@ 2024-05-04 23:10 ` Andrew Morton
2024-05-05 4:39 ` Sergey Senozhatsky
0 siblings, 1 reply; 10+ messages in thread
From: Andrew Morton @ 2024-05-04 23:10 UTC (permalink / raw
To: Sergey Senozhatsky
Cc: kernel test robot, Minchan Kim, llvm, oe-kbuild-all,
Linux Memory Management List, linux-kernel, linux-block
On Sat, 4 May 2024 16:14:16 +0900 Sergey Senozhatsky <senozhatsky@chromium.org> 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.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 08/14] zram: check that backends array has at least one backend
2024-05-04 23:10 ` Andrew Morton
@ 2024-05-05 4:39 ` Sergey Senozhatsky
2024-05-05 5:13 ` Sergey Senozhatsky
0 siblings, 1 reply; 10+ messages in thread
From: Sergey Senozhatsky @ 2024-05-05 4:39 UTC (permalink / raw
To: Andrew Morton
Cc: Sergey Senozhatsky, kernel test robot, Minchan Kim, llvm,
oe-kbuild-all, Linux Memory Management List, linux-kernel,
linux-block
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)
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 08/14] zram: check that backends array has at least one backend
2024-05-05 4:39 ` Sergey Senozhatsky
@ 2024-05-05 5:13 ` Sergey Senozhatsky
2024-05-05 6:48 ` Sergey Senozhatsky
0 siblings, 1 reply; 10+ messages in thread
From: Sergey Senozhatsky @ 2024-05-05 5:13 UTC (permalink / raw
To: Andrew Morton
Cc: kernel test robot, Minchan Kim, llvm, oe-kbuild-all,
Linux Memory Management List, linux-kernel, linux-block,
Sergey Senozhatsky
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?
> : 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)
The problem I'm having with this is that FOO_COMPRESS can be M while
zram needs Y.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 08/14] zram: check that backends array has at least one backend
2024-05-05 5:13 ` Sergey Senozhatsky
@ 2024-05-05 6:48 ` Sergey Senozhatsky
2024-05-06 3:22 ` Sergey Senozhatsky
0 siblings, 1 reply; 10+ messages in thread
From: Sergey Senozhatsky @ 2024-05-05 6:48 UTC (permalink / raw
To: Andrew Morton, linux-kbuild
Cc: kernel test robot, Minchan Kim, llvm, oe-kbuild-all,
Linux Memory Management List, linux-kernel, linux-block,
Sergey Senozhatsky
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?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 08/14] zram: check that backends array has at least one backend
2024-05-05 6:48 ` Sergey Senozhatsky
@ 2024-05-06 3:22 ` Sergey Senozhatsky
2024-05-06 5:20 ` Masahiro Yamada
0 siblings, 1 reply; 10+ messages in thread
From: Sergey Senozhatsky @ 2024-05-06 3:22 UTC (permalink / raw
To: Andrew Morton, linux-kbuild
Cc: kernel test robot, Minchan Kim, llvm, oe-kbuild-all,
Linux Memory Management List, linux-kernel, linux-block,
Sergey Senozhatsky
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?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 08/14] zram: check that backends array has at least one backend
2024-05-06 3:22 ` Sergey Senozhatsky
@ 2024-05-06 5:20 ` Masahiro Yamada
2024-05-06 6:43 ` Sergey Senozhatsky
0 siblings, 1 reply; 10+ messages in thread
From: Masahiro Yamada @ 2024-05-06 5:20 UTC (permalink / raw
To: Sergey Senozhatsky
Cc: Andrew Morton, linux-kbuild, kernel test robot, Minchan Kim, llvm,
oe-kbuild-all, Linux Memory Management List, linux-kernel,
linux-block, Arnd Bergmann
On Mon, May 6, 2024 at 12:22 PM Sergey Senozhatsky
<senozhatsky@chromium.org> wrote:
>
> 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?
I interpret this sentence into:
"randconfig will eventually disable all ZRAM_BACKEND_*,
causing the build error again.
Is it good enough, Arnd?"
Some possible solutions:
config ZRAM_BACKEND_FORCE_LZO
def_bool !ZRAM_BACKEND_LZ4 && !ZRAM_BACKEND_LZ4HC && \
!ZRAM_BACKEND_ZSTD && !ZRAM_BACKEND_DEFLATE
depends on ZRAM
select ZRAM_BACKEND_LZO
config ZRAM_BACKEND_LZO
bool "lzo and lzo-rle compression support"
depends on ZRAM
select LZO_COMPRESS
select LZO_DECOMPRESS
OR
config ZRAM_BACKEND_FORCE_LZO
def_bool !ZRAM_BACKEND_LZ4 && !ZRAM_BACKEND_LZ4HC && \
!ZRAM_BACKEND_ZSTD && !ZRAM_BACKEND_DEFLATE
config ZRAM_BACKEND_LZO
bool "lzo and lzo-rle compression support" if !ZRAM_BACKEND_FORCE_LZO
depends on ZRAM
default ZRAM_BACKEND_FORCE_LZO
select LZO_COMPRESS
select LZO_DECOMPRESS
BTW, "default n" you are adding are redundant.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 08/14] zram: check that backends array has at least one backend
2024-05-06 5:20 ` Masahiro Yamada
@ 2024-05-06 6:43 ` Sergey Senozhatsky
0 siblings, 0 replies; 10+ messages in thread
From: Sergey Senozhatsky @ 2024-05-06 6:43 UTC (permalink / raw
To: Masahiro Yamada
Cc: Sergey Senozhatsky, Andrew Morton, linux-kbuild,
kernel test robot, Minchan Kim, llvm, oe-kbuild-all,
Linux Memory Management List, linux-kernel, linux-block,
Arnd Bergmann
On (24/05/06 14:20), Masahiro Yamada wrote:
> config ZRAM_BACKEND_FORCE_LZO
> def_bool !ZRAM_BACKEND_LZ4 && !ZRAM_BACKEND_LZ4HC && \
> !ZRAM_BACKEND_ZSTD && !ZRAM_BACKEND_DEFLATE
>
> config ZRAM_BACKEND_LZO
> bool "lzo and lzo-rle compression support" if !ZRAM_BACKEND_FORCE_LZO
> depends on ZRAM
> default ZRAM_BACKEND_FORCE_LZO
> select LZO_COMPRESS
> select LZO_DECOMPRESS
I'll take this one. Thank you.
> BTW, "default n" you are adding are redundant.
OK.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-05-06 6:43 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20240503091823.3616962-9-senozhatsky@chromium.org>
2024-05-04 6:54 ` [PATCH 08/14] zram: check that backends array has at least one backend kernel test robot
2024-05-04 7:14 ` Sergey Senozhatsky
2024-05-04 23:10 ` Andrew Morton
2024-05-05 4:39 ` Sergey Senozhatsky
2024-05-05 5:13 ` Sergey Senozhatsky
2024-05-05 6:48 ` Sergey Senozhatsky
2024-05-06 3:22 ` Sergey Senozhatsky
2024-05-06 5:20 ` Masahiro Yamada
2024-05-06 6:43 ` Sergey Senozhatsky
2024-05-04 7:15 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).