aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorDamian Szuberski <[email protected]>2022-04-21 18:37:11 +0200
committerGitHub <[email protected]>2022-04-21 09:37:11 -0700
commit2f31b585e77780b887c3cbf01c0b5498c42fe302 (patch)
tree52bcf72493e21f8b044578d82a0be0ce719ecf68 /config
parent47a02e39721bd226646dbdfe3063563a4a5e9749 (diff)
Strengthen Linux kernel capabilities detection
- Add `CONFIG_BLOCK` Linux config requirement to `ZFS_AC_KERNEL_CONFIG_DEFINED`. OpenZFS won't compile without that block device support due to large amount of functional dependencies on it. - Remove dependency on `groups_alloc()` in `ZFS_AC_KERNEL_SRC_GROUP_INFO_GID` to circumvent the missing stub in Linux 4.X kernel headers. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: szubersk <[email protected]> Closes #13351
Diffstat (limited to 'config')
-rw-r--r--config/kernel-config-defined.m431
-rw-r--r--config/kernel-group-info.m44
2 files changed, 31 insertions, 4 deletions
diff --git a/config/kernel-config-defined.m4 b/config/kernel-config-defined.m4
index c7d18b49b..d9f053400 100644
--- a/config/kernel-config-defined.m4
+++ b/config/kernel-config-defined.m4
@@ -19,19 +19,46 @@ AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEFINED], [
])
])
+ ZFS_AC_KERNEL_SRC_CONFIG_BLOCK
ZFS_AC_KERNEL_SRC_CONFIG_DEBUG_LOCK_ALLOC
ZFS_AC_KERNEL_SRC_CONFIG_TRIM_UNUSED_KSYMS
- ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_INFLATE
ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_DEFLATE
+ ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_INFLATE
AC_MSG_CHECKING([for kernel config option compatibility])
ZFS_LINUX_TEST_COMPILE_ALL([config])
AC_MSG_RESULT([done])
+ ZFS_AC_KERNEL_CONFIG_BLOCK
ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC
ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS
- ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE
ZFS_AC_KERNEL_CONFIG_ZLIB_DEFLATE
+ ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE
+])
+
+dnl #
+dnl # Check CONFIG_BLOCK
+dnl #
+dnl # Verify the kernel has CONFIG_BLOCK support enabled.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_BLOCK], [
+ ZFS_LINUX_TEST_SRC([config_block], [
+ #if !defined(CONFIG_BLOCK)
+ #error CONFIG_BLOCK not defined
+ #endif
+ ],[])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_CONFIG_BLOCK], [
+ AC_MSG_CHECKING([whether CONFIG_BLOCK is defined])
+ ZFS_LINUX_TEST_RESULT([config_block], [
+ AC_MSG_RESULT([yes])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([
+ *** This kernel does not include the required block device support.
+ *** Rebuild the kernel with CONFIG_BLOCK=y set.])
+ ])
])
dnl #
diff --git a/config/kernel-group-info.m4 b/config/kernel-group-info.m4
index 0fee1d36d..6941d62da 100644
--- a/config/kernel-group-info.m4
+++ b/config/kernel-group-info.m4
@@ -6,8 +6,8 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_GROUP_INFO_GID], [
ZFS_LINUX_TEST_SRC([group_info_gid], [
#include <linux/cred.h>
],[
- struct group_info *gi = groups_alloc(1);
- gi->gid[0] = KGIDT_INIT(0);
+ struct group_info gi __attribute__ ((unused)) = {};
+ gi.gid[0] = KGIDT_INIT(0);
])
])