Whamcloud - gitweb
LU-15420 build: fixes to support building on Ubuntu 22.04 LTS
[fs/lustre-release.git] / libcfs / autoconf / lustre-libcfs.m4
index b223340..b7e5c03 100644 (file)
@@ -242,10 +242,13 @@ EXTRA_KCFLAGS="$tmp_flags"
 #
 # kernel 3.15-rc4 commit 71d8e532b1549a478e6a6a8a44f309d050294d00
 # start adding the tag to iov_iter
+# kernel 5.13 commit 8cd54c1c848031a87820e58d772166ffdf8c08c0 change
+# ->type to ->iter_type
 #
 AC_DEFUN([LIBCFS_IOV_ITER_HAS_TYPE], [
 tmp_flags="$EXTRA_KCFLAGS"
 EXTRA_KCFLAGS="-Werror"
+iter_type_member=no
 LB_CHECK_COMPILE([if iov_iter has member type],
 iov_iter_has_type_member, [
        #include <linux/uio.h>
@@ -255,14 +258,28 @@ iov_iter_has_type_member, [
 ],[
        AC_DEFINE(HAVE_IOV_ITER_HAS_TYPE_MEMBER, 1,
                [if iov_iter has member type])
+       iter_type_member=yes
 ])
+if test $iter_type_member = no; then
+  LB_CHECK_COMPILE([if iov_iter has member iter_type],
+  iov_iter_has_iter_type_member, [
+       #include <linux/uio.h>
+  ],[
+       struct iov_iter iter = { .iter_type = ITER_KVEC };
+       (void)iter;
+  ],[
+       AC_DEFINE(HAVE_IOV_ITER_HAS_TYPE_MEMBER, 1,
+               [if iov_iter has member iter_type])
+       iter_type_member=yes
+  ])
+fi
 EXTRA_KCFLAGS="$tmp_flags"
 ]) # LIBCFS_IOV_ITER_HAS_TYPE
 
 #
 # LIBCFS_HAVE_NS_TO_TIMESPEC64
 #
-# Kernel version 4.16-rc3 commit a84d1169164b274f13b97a23ff235c000efe3b49
+# Kernel version 3.16-rc3 commit a84d1169164b274f13b97a23ff235c000efe3b49
 # introduced struct __kernel_old_timeval
 #
 AC_DEFUN([LIBCFS_HAVE_NS_TO_TIMESPEC64],[
@@ -280,6 +297,27 @@ kernel_old_timeval, [
 ]) # LIBCFS_HAVE_NS_TO_TIMESPEC64
 
 #
+# LIBCFS_HAVE_GLOB
+#
+# Kernel version 3.16 commit b01250856b25f4417c51aa33afc451fbf7da1484
+# added glob support to the Linux kernel
+#
+AC_DEFUN([LIBCFS_HAVE_GLOB],[
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([does 'glob_match()' exist],
+glob, [
+       #include <linux/glob.h>
+],[
+       return glob_match(NULL, NULL);
+],[
+       AC_DEFINE(HAVE_GLOB, 1,
+               [glob_match() is available])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_HAVE_GLOB
+
+#
 # Kernel version 3.17 changed hlist_add_after to
 # hlist_add_behind
 #
@@ -1440,7 +1478,7 @@ LB_CHECK_COMPILE([if iov_iter_type exists],
 macro_iov_iter_type_exists, [
        #include <linux/uio.h>
 ],[
-       struct iov_iter iter = { .type = ITER_KVEC };
+       struct iov_iter iter = { };
        enum iter_type type = iov_iter_type(&iter);
        (void)type;
 ],[
@@ -1547,6 +1585,29 @@ EXTRA_KCFLAGS="$tmp_flags"
 ]) # LIBCFS_CACHE_DETAIL_WRITERS
 
 #
+# LIBCFS_GENL_DUMPIT_INFO
+#
+# kernel v5.4-rc1 commit bf813b0afeae2f012f0e527a526c1b78ca21ad82
+# expanded struct genl_dumpit_info to include struct genl_family.
+#
+AC_DEFUN([LIBCFS_GENL_DUMPIT_INFO], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if struct genl_dumpit_info has family field],
+genl_dumpit_info, [
+       #include <net/genetlink.h>
+],[
+       static struct genl_dumpit_info info;
+
+       info.family = NULL;
+],[
+       AC_DEFINE(HAVE_GENL_DUMPIT_INFO, 1,
+               [struct genl_dumpit_info has family field])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_GENL_DUMPIT_INFO
+
+#
 # LIBCFS_KALLSYMS_LOOKUP
 #
 # kernel v5.6-11591-g0bd476e6c671
@@ -1728,17 +1789,100 @@ list_cmp_func_t, [
 EXTRA_KCFLAGS="$tmp_flags"
 ]) # LIBCFS_HAVE_LIST_CMP_FUNC_T
 
-AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [
-       LIBCFS_SRC_HAVE_PROC_OPS
+#
+# LIBCFS_NLA_STRSCPY
+#
+# Kernel version 5.10-rc3 commit 872f690341948b502c93318f806d821c56772c42
+# replaced nla_strlcpy() with nla_strscpy().
+#
+AC_DEFUN([LIBCFS_SRC_NLA_STRSCPY], [
+       LB2_LINUX_TEST_SRC([nla_strscpy], [
+               #include <net/netlink.h>
+       ],[
+               if (nla_strscpy(NULL, NULL, 0) < 0)
+                       return -EINVAL;
+       ],[
+       ],[])
+])
+AC_DEFUN([LIBCFS_NLA_STRSCPY], [
+       AC_MSG_CHECKING([if 'nla_strscpy()' exists])
+       LB2_LINUX_TEST_RESULT([nla_strscpy], [
+               AC_DEFINE(HAVE_NLA_STRSCPY, 1,
+                       ['nla_strscpy' is available])
+               AC_MSG_RESULT(yes)
+       ],[
+               AC_MSG_RESULT(no)
+       ])
+]) # LIBCFS_NLA_STRSCPY
 
-       AC_MSG_CHECKING([for available kernel interfaces to libcfs])
-       LB2_LINUX_TEST_COMPILE_ALL([libcfs])
-       AC_MSG_RESULT([done])
+#
+# LIBCFS_HAVE_CIPHER_HEADER
+#
+# Kernel 5.12 commit 0eb76ba29d16df2951d37c54ca279c4e5630b071
+# crypto: remove cipher routines from public crypto API
+#
+AC_DEFUN([LIBCFS_HAVE_CIPHER_HEADER], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_LINUX_HEADER([crypto/internal/cipher.h], [
+       AC_DEFINE(HAVE_CIPHER_H, 1,
+               [crypto/internal/cipher.h is present])
 ])
-AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [
-       # 5.6
-       LIBCFS_HAVE_PROC_OPS
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_HAVE_CIPHER_HEADER
+
+#
+# LIBCFS_HAVE_TASK_RUNNING
+#
+# Kernel 5.13-rc6 commit b03fbd4ff24c5f075e58eb19261d5f8b3e40d
+# introduced task_is_running() macro.
+#
+AC_DEFUN([LIBCFS_HAVE_TASK_IS_RUNNING], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if task_is_running() is defined],
+task_is_running, [
+       #include <linux/sched.h>
+],[
+       if (task_is_running(current))
+               schedule();
+],[
+       AC_DEFINE(HAVE_TASK_IS_RUNNING, 1,
+               [task_is_running() is defined])
 ])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_HAVE_TASK_IS_RUNNING
+
+#
+# LIBCFS_LINUX_STDARG_HEADER
+#
+# Kernel 5.14-rc5 commit c0891ac15f0428ffa81b2e818d416bdf3cb74ab6
+# isystem: ship and use stdarg.h
+#
+AC_DEFUN([LIBCFS_LINUX_STDARG_HEADER], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_LINUX_HEADER([linux/stdarg.h], [
+       AC_DEFINE(HAVE_LINUX_STDARG_HEADER, 1, [linux/stdarg.h is present])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_LINUX_STDARG_HEADER
+
+#
+# LIBCFS_HAVE_PANIC_NOTIFIER_HEADER
+#
+# Kernel 5.14 commit f39650de687e35766572ac89dbcd16a5911e2f0a
+# kernel.h: split out panic and oops helpers
+#
+AC_DEFUN([LIBCFS_HAVE_PANIC_NOTIFIER_HEADER], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_LINUX_HEADER([linux/panic_notifier.h], [
+       AC_DEFINE(HAVE_PANIC_NOTIFIER_H, 1,
+               [linux/panic_notifier.h is present])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_HAVE_PANIC_NOTIFIER_HEADER
 
 #
 # LIBCFS_PARAM_SET_UINT_MINMAX
@@ -1758,6 +1902,39 @@ param_set_uint_minmax, [
 ])
 ]) # LIBCFS_PARAM_SET_UINT_MINMAX
 
+AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [
+       # 5.6
+       LIBCFS_SRC_HAVE_PROC_OPS
+       # 5.10
+       LIBCFS_SRC_NLA_STRSCPY
+
+       AC_MSG_CHECKING([for available kernel interfaces to libcfs])
+       LB2_LINUX_TEST_COMPILE_ALL([libcfs])
+       AC_MSG_RESULT([done])
+])
+AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [
+       # 5.6
+       LIBCFS_HAVE_PROC_OPS
+       # 5.10
+       LIBCFS_NLA_STRSCPY
+])
+
+#
+# LIBCFS_LINUX_BLK_INTEGRITY_HEADER
+#
+# Kernel 5.15-rc6 commit fe45e630a1035aea94c29016f2598bbde149bbe3
+# block: move integrity handling out of <linux/blkdev.h>
+#
+AC_DEFUN([LIBCFS_LINUX_BLK_INTEGRITY_HEADER], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_LINUX_HEADER([linux/blk-integrity.h], [
+       AC_DEFINE(HAVE_LINUX_BLK_INTEGRITY_HEADER, 1,
+               [linux/blk-integrity.h is present])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_LINUX_BLK_INTEGRITY_HEADER
+
 #
 # LIBCFS_PROG_LINUX
 #
@@ -1784,6 +1961,7 @@ LIBCFS_MATCH_WILDCARD
 LIBCFS_HAVE_MAPPING_AS_EXITING_FLAG
 LIBCFS_IOV_ITER_HAS_TYPE
 # 3.16
+LIBCFS_HAVE_GLOB
 LIBCFS_HAVE_NS_TO_TIMESPEC64
 # 3.17
 LIBCFS_HLIST_ADD_AFTER
@@ -1874,7 +2052,8 @@ LIBCFS_GET_REQUEST_KEY_AUTH
 LIBCFS_LOOKUP_USER_KEY
 LIBCFS_FORCE_SIG_WITH_TASK
 LIBCFS_CACHE_DETAIL_WRITERS
-LIBCFS_HAVE_NR_UNSTABLE_NFS
+# 5.4
+LIBCFS_GENL_DUMPIT_INFO
 # 5.7
 LIBCFS_KALLSYMS_LOOKUP
 LIBCFS_TCP_SOCK_SET_QUICKACK
@@ -1884,13 +2063,22 @@ LIBCFS_TCP_SOCK_SET_KEEPCNT
 LIBCFS_HAVE_MMAP_LOCK
 LIBCFS_KERNEL_SETSOCKOPT
 LIBCFS_VMALLOC_2ARGS
+LIBCFS_HAVE_NR_UNSTABLE_NFS
 LIBCFS_SEC_RELEASE_SECCTX
 # 5.10
 LIBCFS_HAVE_KFREE_SENSITIVE
 LIBCFS_HAVE_CRYPTO_SHA2_HEADER
 LIBCFS_HAVE_LIST_CMP_FUNC_T
+# 5.12
+LIBCFS_HAVE_CIPHER_HEADER
+# 5.13
+LIBCFS_HAVE_TASK_IS_RUNNING
+# 5.14
+LIBCFS_LINUX_STDARG_HEADER
+LIBCFS_HAVE_PANIC_NOTIFIER_HEADER
 # 5.15
 LIBCFS_PARAM_SET_UINT_MINMAX
+LIBCFS_LINUX_BLK_INTEGRITY_HEADER
 ]) # LIBCFS_PROG_LINUX
 
 #