2021-11-29 23:14:15

by Nathan Chancellor

[permalink] [raw]
Subject: [PATCH 0/3] Fix CONFIG_TEST_KMOD with 256kB page size

The kernel test robot reported a build error [1] from a failed assertion
in fs/btrfs/inode.c with a hexagon randconfig that includes
CONFIG_PAGE_SIZE_256KB. This error is the same one that was addressed by
commit b05fbcc36be1 ("btrfs: disable build on platforms having page size
256K") but CONFIG_TEST_KMOD selects CONFIG_BTRFS without having the
"page size less than 256kB dependency", which results in the error
reappearing.

The first patch introduces CONFIG_PAGE_SIZE_LESS_THAN_256KB by splitting
it off from CONFIG_PAGE_SIZE_LESS_THAN_64KB, which was introduced in
commit 1f0e290cc5fd ("arch: Add generic Kconfig option indicating page
size smaller than 64k") for a similar reason in 5.16-rc3.

The second patch uses that configuration option for CONFIG_BTRFS to
reduce duplication.

The third patch resolves the build error by adding
CONFIG_PAGE_SIZE_LESS_THAN_256KB as a dependency to CONFIG_TEST_KMOD so
that CONFIG_BTRFS does not get enabled under that invalid configuration.

This series could go through either btrfs or -mm, as arch/Kconfig and
lib/Kconfig.debug have no formal maintainer. I have sent it to the
maintainers of both so that they can decide who will take it.

[1]: https://lore.kernel.org/r/[email protected]/

Nathan Chancellor (3):
arch/Kconfig: Split PAGE_SIZE_LESS_THAN_256KB from
PAGE_SIZE_LESS_THAN_64KB
btrfs: Use generic Kconfig option for 256kB page size limit
lib/Kconfig.debug: Make TEST_KMOD depend on PAGE_SIZE_LESS_THAN_256KB

arch/Kconfig | 4 ++++
fs/btrfs/Kconfig | 3 +--
lib/Kconfig.debug | 1 +
3 files changed, 6 insertions(+), 2 deletions(-)


base-commit: d58071a8a76d779eedab38033ae4c821c30295a5
--
2.34.1



2021-11-29 23:14:25

by Nathan Chancellor

[permalink] [raw]
Subject: [PATCH 2/3] btrfs: Use generic Kconfig option for 256kB page size limit

Use the newly introduced CONFIG_PAGE_SIZE_LESS_THAN_256KB to describe
the dependency introduced by commit b05fbcc36be1 ("btrfs: disable build
on platforms having page size 256K").

Signed-off-by: Nathan Chancellor <[email protected]>
---
fs/btrfs/Kconfig | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig
index 520a0f6a7d9e..183e5c4aed34 100644
--- a/fs/btrfs/Kconfig
+++ b/fs/btrfs/Kconfig
@@ -18,8 +18,7 @@ config BTRFS_FS
select RAID6_PQ
select XOR_BLOCKS
select SRCU
- depends on !PPC_256K_PAGES # powerpc
- depends on !PAGE_SIZE_256KB # hexagon
+ depends on PAGE_SIZE_LESS_THAN_256KB

help
Btrfs is a general purpose copy-on-write filesystem with extents,
--
2.34.1


2021-11-29 23:14:27

by Nathan Chancellor

[permalink] [raw]
Subject: [PATCH 3/3] lib/Kconfig.debug: Make TEST_KMOD depend on PAGE_SIZE_LESS_THAN_256KB

Commit b05fbcc36be1 ("btrfs: disable build on platforms having page size
256K") disabled btrfs for configurations that used a 256kB page size.
However, it did not fully solve the problem because CONFIG_TEST_KMOD
selects CONFIG_BTRFS, which does not account for the dependency. This
results in a Kconfig warning and the failed BUILD_BUG_ON error
returning.

WARNING: unmet direct dependencies detected for BTRFS_FS
Depends on [n]: BLOCK [=y] && !PPC_256K_PAGES && !PAGE_SIZE_256KB [=y]
Selected by [m]:
- TEST_KMOD [=m] && RUNTIME_TESTING_MENU [=y] && m && MODULES [=y] && NETDEVICES [=y] && NET_CORE [=y] && INET [=y] && BLOCK [=y]

To resolve this, add CONFIG_PAGE_SIZE_LESS_THAN_256KB as a dependency of
CONFIG_TEST_KMOD so there is no more invalid configuration or build
errors.

Fixes: b05fbcc36be1 ("btrfs: disable build on platforms having page size 256K")
Reported-by: kernel test robot <[email protected]>
Signed-off-by: Nathan Chancellor <[email protected]>
---
lib/Kconfig.debug | 1 +
1 file changed, 1 insertion(+)

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 5c12bde10996..a32f6bb4642c 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -2486,6 +2486,7 @@ config TEST_KMOD
depends on m
depends on NETDEVICES && NET_CORE && INET # for TUN
depends on BLOCK
+ depends on PAGE_SIZE_LESS_THAN_256KB # for BTRFS
select TEST_LKM
select XFS_FS
select TUN
--
2.34.1


2021-11-30 14:34:56

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH 2/3] btrfs: Use generic Kconfig option for 256kB page size limit

On Mon, Nov 29, 2021 at 04:01:40PM -0700, Nathan Chancellor wrote:
> Use the newly introduced CONFIG_PAGE_SIZE_LESS_THAN_256KB to describe
> the dependency introduced by commit b05fbcc36be1 ("btrfs: disable build
> on platforms having page size 256K").
>
> Signed-off-by: Nathan Chancellor <[email protected]>

Acked-by: David Sterba <[email protected]>