X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fautoconf%2Flustre-core.m4;h=e8e17d718a19d0f0c95058f2438e7b79c67cb983;hp=a466c7616bece1f305b633c8c429372b406a6912;hb=dc2a6f4b0a36ca2a745e52b02fdcb73bd8d052ec;hpb=742897a967cff5be53c447d14b17ae405c2b31f2 diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index a466c76..e8e17d7 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -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 +],[ + IS_ENCRYPTED((struct inode *)0); +],[ + has_is_encrypted="yes" +]) +]) # LC_IS_ENCRYPTED + +# # LC_I_PAGES # # kernel 4.17 commit b93b016313b3ba8003c3b8bb71f569af91f19fc7 @@ -1986,41 +2024,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 -],[ - 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 #include + #include ],[ - 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 +2115,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 +],[ + 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 +2148,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 +],[ + 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 +2211,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 +],[ + fscrypt_ioctl_get_policy_ex(NULL, NULL); +],[ + has_fscrypt_support="yes" +]) +]) # LC_FSCRYPT_SUPPORT + # # LC_PROG_LINUX # @@ -2166,6 +2249,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 +2390,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 +2555,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 +2622,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 +2655,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], @@ -2639,6 +2763,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 +2783,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