Whamcloud - gitweb
LU-13225 utils: fix install path for bash-completion
[fs/lustre-release.git] / lustre / autoconf / lustre-core.m4
index a466c76..4c8bef4 100644 (file)
@@ -56,6 +56,16 @@ AC_CHECK_FUNCS([name_to_handle_at],
 ]) # LC_GLIBC_SUPPORT_FHANDLES
 
 #
+# LC_GLIBC_SUPPORT_COPY_FILE_RANGE
+#
+AC_DEFUN([LC_GLIBC_SUPPORT_COPY_FILE_RANGE], [
+AC_CHECK_FUNCS([copy_file_range],
+       [AC_DEFINE(HAVE_COPY_FILE_RANGE, 1,
+               [copy_file_range() is supported])],
+       [AC_MSG_WARN([copy_file_range() is not supported])])
+]) # LC_GLIBC_SUPPORT_COPY_FILE_RANGE
+
+#
 # LC_STACK_SIZE
 #
 # Ensure the stack size is at least 8k in Lustre server (all kernels)
@@ -102,7 +112,7 @@ AC_ARG_ENABLE([pinger],
        [], [enable_pinger="yes"])
 AC_MSG_RESULT([$enable_pinger])
 AS_IF([test "x$enable_pinger" != xno],
-       [AC_DEFINE(ENABLE_PINGER, 1,[Use the Pinger])])
+       [AC_DEFINE(CONFIG_LUSTRE_FS_PINGER, 1,[Use the Pinger])])
 ]) # LC_CONFIG_PINGER
 
 #
@@ -285,6 +295,18 @@ AC_ARG_ENABLE([gss],
        [], [enable_gss="auto"])
 AC_MSG_RESULT([$enable_gss])
 
+AC_ARG_VAR([TEST_JOBS],
+    [simultaneous jobs during configure (defaults to $(nproc))])
+if test "x$ac_cv_env_TEST_JOBS_set" != "xset"; then
+       TEST_JOBS=${TEST_JOBS:-$(nproc)}
+fi
+AC_SUBST(TEST_JOBS)
+
+AC_ARG_VAR([TEST_DIR],
+    [location of temporary parallel configure tests (defaults to $PWD/lb2)])
+       TEST_DIR=${TEST_DIR:-$PWD/_lpb}
+AC_SUBST(TEST_DIR)
+
 AS_IF([test "x$enable_gss" != xno], [
        LC_CONFIG_GSS_KEYRING
        LC_KEY_TYPE_INSTANTIATE_2ARGS
@@ -1913,6 +1935,22 @@ bi_bdev, [
 ]) # LC_BI_BDEV
 
 #
+# LC_IS_ENCRYPTED
+#
+# 4.14 introduced IS_ENCRYPTED and S_ENCRYPTED
+#
+AC_DEFUN([LC_IS_ENCRYPTED], [
+LB_CHECK_COMPILE([if IS_ENCRYPTED is defined],
+is_encrypted, [
+       #include <linux/fs.h>
+],[
+       IS_ENCRYPTED((struct inode *)0);
+],[
+       has_is_encrypted="yes"
+])
+]) # LC_IS_ENCRYPTED
+
+#
 # LC_I_PAGES
 #
 # kernel 4.17 commit b93b016313b3ba8003c3b8bb71f569af91f19fc7
@@ -1966,6 +2004,9 @@ vm_fault_t, [
 # When inode times are timespec64 stop using the deprecated
 # time interfaces.
 #
+# kernel v5.5-rc1-6-gba70609d5ec6 ba70609d5ec664a8f36ba1c857fcd97a478adf79
+# fs: Delete timespec64_trunc()
+#
 AC_DEFUN([LC_INODE_TIMESPEC64], [
 tmp_flags="$EXTRA_KCFLAGS"
 EXTRA_KCFLAGS="-Werror"
@@ -1974,9 +2015,9 @@ inode_timespec64, [
        #include <linux/fs.h>
 ],[
        struct inode *inode = NULL;
-       struct timespec64 ts = {};
+       struct timespec64 ts = {0, 1};
 
-       inode->i_atime = timespec64_trunc(ts, 1);
+       inode->i_atime = ts;
        (void)inode;
 ],[
        AC_DEFINE(HAVE_INODE_TIMESPEC64, 1,
@@ -1986,41 +2027,25 @@ EXTRA_KCFLAGS="$tmp_flags"
 ]) # LC_INODE_TIMESPEC64
 
 #
-# LC_XA_IS_VALUE
-# kernel 4.19-rc6 commit 3159f943aafdbacb2f94c38fdaadabf2bbde2a14
-# xarray: Replace exceptional entries
-# adds xa_is_value
-#
-AC_DEFUN([LC_XA_IS_VALUE], [
-LB_CHECK_COMPILE([xa_is_value exist],
-xa_is_value, [
-       #include <linux/xarray.h>
-],[
-       xa_is_value(NULL);
-],[
-       AC_DEFINE(HAVE_XA_IS_VALUE, 1, [xa_is_value exist])
-])
-]) # LC_XA_IS_VALUE
-
-#
 # LC___XA_SET_MARK
 #
 # kernel 4.20 commit v4.19-rc5-248-g9b89a0355144
-# xarray: Add XArray marks
+# xarray: Add XArray marks - replaced radix_tree_tag_set
 #
 AC_DEFUN([LC___XA_SET_MARK], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
 LB_CHECK_COMPILE([if '__xa_set_mark' exists],
 __xa_set_mark, [
-       #include <linux/xarray.h>
        #include <linux/fs.h>
+       #include <linux/radix-tree.h>
 ],[
-       struct xarray *xa = NULL;
-
-       __xa_set_mark(xa, 0, PAGECACHE_TAG_DIRTY);
+       radix_tree_tag_set(NULL, 0, PAGECACHE_TAG_DIRTY);
 ],[
-       AC_DEFINE(HAVE___XA_SET_MARK, 1,
+       AC_DEFINE(HAVE_RADIX_TREE_TAG_SET, 1,
                [__xa_set_mark exists])
 ])
+EXTRA_KCFLAGS="$tmp_flags"
 ]) # LC___XA_SET_MARK
 
 #
@@ -2093,6 +2118,28 @@ EXTRA_KCFLAGS="$tmp_flags"
 ]) # LC_HAS_LINUX_SELINUX_ENABLED
 
 #
+# LB_HAVE_BVEC_ITER_ALL
+#
+# kernel 5.1 commit 6dc4f100c175dd0511ae8674786e7c9006cdfbfa
+# block: allow bio_for_each_segment_all() to iterate over multi-page bvec
+#
+AC_DEFUN([LB_HAVE_BVEC_ITER_ALL], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if bvec_iter_all exists for multi-page bvec iternation],
+ext4fs_dirhash, [
+       #include <linux/bvec.h>
+],[
+       struct bvec_iter_all iter;
+       (void)iter;
+],[
+       AC_DEFINE(HAVE_BVEC_ITER_ALL, 1,
+               [if bvec_iter_all exists for multi-page bvec iternation])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LB_HAVE_BVEC_ITER_ALL
+
+#
 # LC_ACCOUNT_PAGE_DIRTIED
 #
 # After 5.2 kernel page dirtied is not exported
@@ -2104,6 +2151,25 @@ LB_CHECK_EXPORT([account_page_dirtied], [mm/page-writeback.c],
 ]) # LC_ACCOUNT_PAGE_DIRTIED
 
 #
+# LC_KEYRING_SEARCH_4ARGS
+#
+# Kernel 5.2 commit dcf49dbc8077
+# keys: Add a 'recurse' flag for keyring searches
+#
+AC_DEFUN([LC_KEYRING_SEARCH_4ARGS], [
+LB_CHECK_COMPILE([if 'keyring_search' has 4 args],
+keyring_search_4args, [
+       #include <linux/key.h>
+],[
+       key_ref_t keyring;
+       keyring_search(keyring, NULL, NULL, false);
+],[
+       AC_DEFINE(HAVE_KEYRING_SEARCH_4ARGS, 1,
+               [keyring_search has 4 args])
+])
+]) # LC_KEYRING_SEARCH_4ARGS
+
+#
 # LC_BIO_BI_PHYS_SEGMENTS
 #
 # kernel 5.3-rc1 commit 14ccb66b3f585b2bc21e7256c96090abed5a512c
@@ -2148,6 +2214,26 @@ lock_manager_ops_lm_compare_owner, [
 EXTRA_KCFLAGS="$tmp_flags"
 ]) # LC_LM_COMPARE_OWNER_EXISTS
 
+AC_DEFUN([LC_PROG_LINUX_SRC], [])
+AC_DEFUN([LC_PROG_LINUX_RESULTS], [])
+
+#
+# LC_FSCRYPT_SUPPORT
+#
+# 5.4 introduced fscrypt encryption policies v2
+#
+AC_DEFUN([LC_FSCRYPT_SUPPORT], [
+LB_CHECK_COMPILE([for fscrypt in-kernel support],
+fscrypt_support, [
+       #define __FS_HAS_ENCRYPTION 0
+       #include <linux/fscrypt.h>
+],[
+       fscrypt_ioctl_get_policy_ex(NULL, NULL);
+],[
+       has_fscrypt_support="yes"
+])
+]) # LC_FSCRYPT_SUPPORT
+
 #
 # LC_PROG_LINUX
 #
@@ -2166,6 +2252,7 @@ AC_DEFUN([LC_PROG_LINUX], [
        LC_CONFIG_GSS
 
        LC_GLIBC_SUPPORT_FHANDLES
+       LC_GLIBC_SUPPORT_COPY_FILE_RANGE
        LC_OPENSSL_SSK
        LC_OPENSSL_GETSEPOL
 
@@ -2306,19 +2393,19 @@ AC_DEFUN([LC_PROG_LINUX], [
 
        # 4.18
        LC_INODE_TIMESPEC64
-       LC_XA_IS_VALUE
 
        # 4.20
        LC___XA_SET_MARK
        LC_UAPI_LINUX_MOUNT_H
        LC_HAVE_SUNRPC_CACHE_HASH_LOCK_IS_A_SPINLOCK
-       LC_REPLACE_EXCEPTIONAL_ENTRIES
 
        # 5.1
        LC_HAS_LINUX_SELINUX_ENABLED
+       LB_HAVE_BVEC_ITER_ALL
 
        # 5.2
        LC_ACCOUNT_PAGE_DIRTIED
+       LC_KEYRING_SEARCH_4ARGS
 
        # 5.3
        LC_BIO_BI_PHYS_SEGMENTS
@@ -2471,6 +2558,41 @@ AC_SUBST(OSDADDON)
 ]) # LC_OSD_ADDON
 
 #
+# LC_CONFIG_CRYPTO
+#
+# Check whether to enable Lustre client crypto
+#
+AC_DEFUN([LC_CONFIG_CRYPTO], [
+AC_MSG_CHECKING([whether to enable Lustre client crypto])
+AC_ARG_ENABLE([crypto],
+       AC_HELP_STRING([--enable-crypto],
+               [enable Lustre client crypto]),
+       [], [enable_crypto="auto"])
+AS_IF([test "x$enable_crypto" != xno -a "x$enable_dist" = xno], [
+       AC_MSG_RESULT(
+       )
+       LC_IS_ENCRYPTED
+       LC_FSCRYPT_SUPPORT])
+AS_IF([test "x$has_fscrypt_support" = xyes], [
+       AC_DEFINE(HAVE_LUSTRE_CRYPTO, 1, [Enable Lustre client crypto via in-kernel fscrypt])
+       enable_crypto=yes],
+       [AS_IF([test "x$has_is_encrypted" = xyes], [
+             AC_DEFINE(HAVE_LUSTRE_CRYPTO, 1, [Enable Lustre client crypto via embedded llcrypt])
+             AC_DEFINE(CONFIG_LL_ENCRYPTION, 1, [embedded llcrypt])
+             enable_crypto=yes
+             enable_llcrypt=yes], [
+             AS_IF([test "x$enable_crypto" = xyes],
+                   [AC_MSG_ERROR([Lustre client crypto cannot be enabled because of lack of encryption support in your kernel.])])
+             AS_IF([test "x$enable_crypto" != xno -a "x$enable_dist" = xno],
+                   [AC_MSG_WARN(Lustre client crypto cannot be enabled because of lack of encryption support in your kernel.)])
+             enable_crypto=no])])
+AS_IF([test "x$enable_dist" != xno], [
+       enable_crypto=yes
+       enable_llcrypt=yes])
+AC_MSG_RESULT([$enable_crypto])
+]) # LC_CONFIG_CRYPTO
+
+#
 # LC_CONFIGURE
 #
 # other configure checks
@@ -2503,6 +2625,9 @@ ext2fs.h not found. Please install e2fsprogs development package.
        ])
 ])
 
+# lustre/tests/statx_test.c
+AC_CHECK_FUNCS([statx])
+
 # lustre/utils/lfs.c
 AS_IF([test "$enable_dist" = "no"], [
                AC_CHECK_LIB([z], [crc32], [
@@ -2533,6 +2658,8 @@ No selinux package found, unable to build selinux enabled tools
 ])
 AC_SUBST(SELINUX)
 
+AC_CHECK_LIB([keyutils], [add_key])
+
 # Super safe df
 AC_MSG_CHECKING([whether to report minimum OST free space])
 AC_ARG_ENABLE([mindf],
@@ -2609,7 +2736,7 @@ AC_ARG_WITH([bash-completion-dir],
 AS_IF([test "x$with_bash_completion_dir" = "xyes"], [
        BASH_COMPLETION_DIR="`pkg-config --variable=completionsdir bash-completion`"
        AS_IF([test "x$BASH_COMPLETION_DIR" = "x"], [
-               [BASH_COMPLETION_DIR="$datadir/bash-completion/completions"]
+               [BASH_COMPLETION_DIR="/usr/share/bash-completion/completions"]
        ])
 ], [
        BASH_COMPLETION_DIR="$with_bash_completion_dir"
@@ -2639,6 +2766,7 @@ AM_CONDITIONAL(ENABLE_BASH_COMPLETION, test "x$with_bash_completion_dir" != "xno
 AM_CONDITIONAL(XATTR_HANDLER, test "x$lb_cv_compile_xattr_handler_flags" = xyes)
 AM_CONDITIONAL(SELINUX, test "$SELINUX" = "-lselinux")
 AM_CONDITIONAL(GETSEPOL, test x$enable_getsepol = xyes)
+AM_CONDITIONAL(LLCRYPT, test x$enable_llcrypt = xyes)
 ]) # LC_CONDITIONALS
 
 #
@@ -2658,20 +2786,17 @@ lustre/doc/Makefile
 lustre/include/Makefile
 lustre/include/lustre/Makefile
 lustre/include/uapi/linux/lustre/Makefile
+lustre/kernel_patches/targets/4.18-rhel8.2.target
 lustre/kernel_patches/targets/4.18-rhel8.1.target
 lustre/kernel_patches/targets/4.18-rhel8.target
+lustre/kernel_patches/targets/3.10-rhel7.8.target
 lustre/kernel_patches/targets/3.10-rhel7.7.target
 lustre/kernel_patches/targets/3.10-rhel7.6.target
 lustre/kernel_patches/targets/3.10-rhel7.5.target
 lustre/kernel_patches/targets/4.14-rhel7.5.target
 lustre/kernel_patches/targets/4.14-rhel7.6.target
-lustre/kernel_patches/targets/3.0-sles11.target
-lustre/kernel_patches/targets/3.0-sles11sp3.target
-lustre/kernel_patches/targets/3.0-sles11sp4.target
-lustre/kernel_patches/targets/3.12-sles12.target
-lustre/kernel_patches/targets/4.4-sles12.target
-lustre/kernel_patches/targets/4.4-sles12sp3.target
 lustre/kernel_patches/targets/4.12-sles12sp4.target
+lustre/kernel_patches/targets/4.12-sles12sp5.target
 lustre/kernel_patches/targets/4.12-sles15sp1.target
 lustre/kernel_patches/targets/3.x-fc18.target
 lustre/ldlm/Makefile