Whamcloud - gitweb
LU-13783 libcfs: support __vmalloc with only 2 args.
[fs/lustre-release.git] / libcfs / autoconf / lustre-libcfs.m4
index c3efe06..6b20241 100644 (file)
@@ -1045,6 +1045,31 @@ LB_CHECK_EXPORT([save_stack_trace_tsk], [arch/$SUBARCH/kernel/stacktrace.c],
 ]) # LIBCFS_EXPORT_SAVE_STACK_TRACE_TSK
 
 #
+# LIBCFS_LOCKDEP_IS_HELD
+#
+# Kernel v4.15-rc8-106-g08f36ff64234
+# lockdep: Make lockdep checking constant
+#
+AC_DEFUN([LIBCFS_LOCKDEP_IS_HELD], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if 'lockdep_is_held()' uses const argument],
+lockdep_is_held, [
+       #include <linux/lockdep.h>
+],[
+#ifdef CONFIG_LOCKDEP
+       const struct spinlock *lock = NULL;
+
+       lockdep_is_held(lock);
+#endif
+],[],[
+       AC_DEFINE(NEED_LOCKDEP_IS_HELD_DISCARD_CONST, 1,
+               [lockdep_is_held() argument is const])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_LOCKDEP_IS_HELD
+
+#
 # LIBCFS_TIMER_SETUP
 #
 # Kernel version 4.15 commit e99e88a9d2b067465adaa9c111ada99a041bef9a
@@ -1085,6 +1110,24 @@ wait_var_event, [
 ]) # LIBCFS_WAIT_VAR_EVENT
 
 #
+# LIBCFS_BITMAP_ALLOC
+#
+# Kernel version 4.17 commit c42b65e363ce97a828f81b59033c3558f8fa7f70
+# added bitmap memory allocation handling.
+#
+AC_DEFUN([LIBCFS_BITMAP_ALLOC], [
+LB_CHECK_COMPILE([if Linux bitmap memory management exist],
+bitmap_alloc, [
+       #include <linux/bitmap.h>
+],[
+       unsigned long *map = bitmap_alloc(1, GFP_KERNEL);
+],[
+       AC_DEFINE(HAVE_BITMAP_ALLOC, 1,
+               [Linux bitmap can be allocated])
+])
+]) # LIBCFS_BITMAP_ALLOC
+
+#
 # LIBCFS_CLEAR_AND_WAKE_UP_BIT
 #
 # Kernel version 4.17-rc2 commit 8236b0ae31c837d2b3a2565c5f8d77f637e824cc
@@ -1117,12 +1160,12 @@ tmp_flags="$EXTRA_KCFLAGS"
 EXTRA_KCFLAGS="-Werror"
 LB_CHECK_COMPILE([if page cache uses Xarray],
 xarray_support, [
-       #include <linux/radix-tree.h>
+       #include <linux/xarray.h>
 ],[
-       radix_tree_exceptional_entry(NULL);
+       xa_is_value(NULL);
 ],[
-       AC_DEFINE(HAVE_RADIX_TREE_EXCEPTIONAL_ENTRY, 1,
-               [kernel lacks 'xa_is_value'])
+       AC_DEFINE(HAVE_XARRAY_SUPPORT, 1,
+               [kernel Xarray implementation lacks 'xa_is_value'])
 ])
 EXTRA_KCFLAGS="$tmp_flags"
 ]) # LIBCFS_XARRAY_SUPPORT
@@ -1247,17 +1290,82 @@ EXTRA_KCFLAGS="$tmp_flags"
 ]) # LIBCFS_CACHE_DETAIL_WRITERS
 
 #
-# LIBCFS_CONFIG_CRYPTO_CRC32
+# LIBCFS_VMALLOC_2ARGS
+#
+# kernel v5.8-rc1~201^2~19
+# mm: remove the pgprot argument to __vmalloc
+AC_DEFUN([LIBCFS_VMALLOC_2ARGS], [
+LB_CHECK_COMPILE([if __vmalloc has 2 args],
+vmalloc_2args, [
+       #include <linux/vmalloc.h>
+],[
+       __vmalloc(0, 0);
+],[
+       AC_DEFINE(HAVE_VMALLOC_2ARGS, 1,
+               [__vmalloc only takes 2 args.])
+])
+]) # LIBCFS_VMALLOC_2ARGS
+
+#
+# LIBCFS_HAVE_NR_UNSTABLE_NFS
 #
-# The kernel must support CONFIG_CRYPTO_CRC32 to RPC checksumming
+# kernel v5.8-rc1~201^2~75
+# mm/writeback: discard NR_UNSTABLE_NFS, use NR_WRITEBACK instead
 #
-AC_DEFUN([LIBCFS_CONFIG_CRYPTO_CRC32], [
-LB_CHECK_CONFIG_IM([CRYPTO_CRC32], [],
-       [AC_MSG_ERROR([
+AC_DEFUN([LIBCFS_HAVE_NR_UNSTABLE_NFS], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if NR_UNSTABLE_NFS still in use],
+nr_unstable_nfs_exists, [
+       #include <linux/mm.h>
+
+       int i;
+],[
+       i = NR_UNSTABLE_NFS;
+],[
+       AC_DEFINE(HAVE_NR_UNSTABLE_NFS, 1,
+               [NR_UNSTABLE_NFS is still in use.])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_HAVE_NR_UNSTABLE_NFS
+
+#
+# LIBCFS_HAVE_MMAP_LOCK
+#
+# kernel v5.8-rc1~83^2~24
+# mmap locking API: rename mmap_sem to mmap_lock
+#
+AC_DEFUN([LIBCFS_HAVE_MMAP_LOCK], [
+LB_CHECK_COMPILE([if mmap_lock API is available],
+mmap_write_lock, [
+       #include <linux/mm.h>
+],[
+       mmap_write_lock(NULL);
+],[
+       AC_DEFINE(HAVE_MMAP_LOCK, 1,
+               [mmap_lock API is available.])
+])
+]) # LIBCFS_HAVE_MMAP_LOCK
 
-Lustre requires that CONFIG_CRYPTO_CRC32 is enabled in your kernel.
-])])
-]) # LIBCFS_CONFIG_CRYPTO_CRC32
+#
+# LIBCFS_KERNEL_SETSOCKOPT
+#
+# kernel v5.8-rc1~165^2~59^2
+# net: remove kernel_setsockopt
+AC_DEFUN([LIBCFS_KERNEL_SETSOCKOPT], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if kernel_setsockopt still in use],
+kernel_setsockopt_exists, [
+       #include <linux/net.h>
+],[
+       kernel_setsockopt(NULL, 0, 0, NULL, 0);
+],[
+       AC_DEFINE(HAVE_KERNEL_SETSOCKOPT, 1,
+               [kernel_setsockopt still in use])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LIBCFS_KERNEL_SETSOCKOPT
 
 AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [] )
 AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [])
@@ -1271,7 +1379,6 @@ AC_DEFUN([LIBCFS_PROG_LINUX], [
 AC_MSG_NOTICE([LibCFS kernel checks
 ==============================================================================])
 LIBCFS_CONFIG_PANIC_DUMPLOG
-LIBCFS_CONFIG_CRYPTO_CRC32
 
 # 3.11
 LIBCFS_KTIME_GET_TS64
@@ -1349,10 +1456,12 @@ LIBCFS_NEW_KERNEL_WRITE
 LIBCFS_NEW_KERNEL_READ
 LIBCFS_EXPORT_SAVE_STACK_TRACE_TSK
 # 4.15
+LIBCFS_LOCKDEP_IS_HELD
 LIBCFS_TIMER_SETUP
 # 4.16
 LIBCFS_WAIT_VAR_EVENT
 # 4.17
+LIBCFS_BITMAP_ALLOC
 LIBCFS_CLEAR_AND_WAKE_UP_BIT
 # 4.19
 LIBCFS_XARRAY_SUPPORT
@@ -1365,6 +1474,11 @@ LIBCFS_GET_REQUEST_KEY_AUTH
 LIBCFS_LOOKUP_USER_KEY
 LIBCFS_FORCE_SIG_WITH_TASK
 LIBCFS_CACHE_DETAIL_WRITERS
+LIBCFS_HAVE_NR_UNSTABLE_NFS
+# 5.8
+LIBCFS_HAVE_MMAP_LOCK
+LIBCFS_KERNEL_SETSOCKOPT
+LIBCFS_VMALLOC_2ARGS
 ]) # LIBCFS_PROG_LINUX
 
 #