#
# 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>
],[
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
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;
],[
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
]) # 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
])
]) # 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
#
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
#