Whamcloud - gitweb
LU-15420 build: fixes to support building on Ubuntu 22.04 LTS
[fs/lustre-release.git] / libcfs / autoconf / lustre-libcfs.m4
index c711c85..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,7 +258,21 @@ 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
 
@@ -1461,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;
 ],[
@@ -1772,17 +1789,31 @@ 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
-
-       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
+#
+# 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
 
 #
 # LIBCFS_HAVE_CIPHER_HEADER
@@ -1801,6 +1832,43 @@ 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
@@ -1834,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
 #
@@ -1970,10 +2071,14 @@ 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
 
 #