X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fautoconf%2Flustre-core.m4;h=659beb9b8fd22fb2e9e336197395d30e850ea88e;hp=e9b29285f0955d626bef978e2acffdf710835f9a;hb=b0f150eba4c2ced44c3a41bcb7cfc7517f7b31f1;hpb=1635dc9de0bc1d6701ca5f4bc0d342fca416f89a diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index e9b2928..659beb9 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -66,6 +66,45 @@ AC_CHECK_FUNCS([copy_file_range], ]) # LC_GLIBC_SUPPORT_COPY_FILE_RANGE # +# LC_FID2PATH_UNION +# +AC_DEFUN([LC_FID2PATH_ANON_UNION], [ +AC_MSG_CHECKING([if 'struct getinfo_fid2path' has anony•mous union]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ + #include + + int main(void) { + struct getinfo_fid2path gf; + struct lu_fid root_fid; + + *gf.gf_root_fid = root_fid; + return 0; + } +])],[ + AC_DEFINE(HAVE_FID2PATH_ANON_UNIONS, 1, [union is unnamed]) + AC_MSG_RESULT("yes") +]) +]) # LC_FID2PATH_ANON_UNION + +# +# LC_IOC_REMOVE_ENTRY +# +AC_DEFUN([LC_IOC_REMOVE_ENTRY], [ +AC_MSG_CHECKING([if ioctl IOC_REMOVE_ENTRY' is supported]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ + #include + #include + + int main(void) { + return ioctl(0, LL_IOC_REMOVE_ENTRY, NULL); + } +])],[ + AC_DEFINE(HAVE_IOC_REMOVE_ENTRY, 1, + [IOC_REMOVE_ENTRY ioctl exists]) +]) +]) # LC_IOC_REMOVE_ENTRY + +# # LC_STACK_SIZE # # Ensure the stack size is at least 8k in Lustre server (all kernels) @@ -229,7 +268,9 @@ AC_MSG_CHECKING([whether to enable gss keyring backend]) AC_ARG_ENABLE([gss_keyring], [AC_HELP_STRING([--disable-gss-keyring], [disable gss keyring backend])], - [], [enable_gss_keyring="auto"]) + [], [AS_IF([test "x$enable_gss" != xno], [ + enable_gss_keyring="yes"], [ + enable_gss_keyring="auto"])]) AC_MSG_RESULT([$enable_gss_keyring]) AS_IF([test "x$enable_gss_keyring" != xno], [ LB_CHECK_CONFIG_IM([KEYS], [], [ @@ -248,7 +289,10 @@ AS_IF([test "x$enable_gss_keyring" != xno], [ AS_IF([test "x$enable_gss_keyring" = xyes], [ AC_MSG_ERROR([Cannot enable gss_keyring. See above for details.]) ]) + enable_ssk="no" ]) +], [ + enable_ssk="no" ]) ]) # LC_CONFIG_GSS_KEYRING @@ -341,7 +385,9 @@ AS_IF([test "x$enable_gss" != xno], [ enable_gss="no" ]) - enable_ssk=$enable_gss + AS_IF([test "x$enable_ssk" != xno], [ + enable_ssk=$enable_gss + ]) ], [ enable_gss_keyring="no" ]) @@ -415,6 +461,21 @@ get_projid, [ ]) ]) # LC_HAVE_PROJECT_QUOTA +AC_DEFUN([LC_HAVE_GET_INODE_USAGE], [ +LB_CHECK_COMPILE([if get_inode_usage exists], +get_inode_usage, [ + struct inode; + #include +],[ + struct dquot_operations ops = { }; + + ops.get_inode_usage(NULL, NULL); +],[ + AC_DEFINE(HAVE_GET_INODE_USAGE, 1, + [get_inode_usage function exists]) +]) +]) # LC_HAVE_GET_INODE_USAGE + # # LC_INVALIDATE_RANGE # @@ -619,6 +680,24 @@ kiocb_ki_left, [ ]) # LC_KIOCB_KI_LEFT # +# LC_REGISTER_SHRINKER_RET +# +# v3.11-8748-g1d3d4437eae1 register_shrinker returns a status +# +AC_DEFUN([LC_REGISTER_SHRINKER_RET], [ +LB_CHECK_COMPILE([if register_shrinker() returns status], +register_shrinker_ret, [ + #include +],[ + if (register_shrinker(NULL)) + unregister_shrinker(NULL); +],[ + AC_DEFINE(HAVE_REGISTER_SHRINKER_RET, 1, + [register_shrinker() returns status]) +]) +]) # LC_REGISTER_SHRINKER_RET + +# # LC_VFS_RENAME_5ARGS # # 3.13 has vfs_rename with 5 args @@ -996,6 +1075,23 @@ aio_complete, [ ]) # LC_HAVE_AIO_COMPLETE # +# LC_HAVE_IS_ROOT_INODE +# +# 3.19 kernel adds is_root_inode() +# Commit a7400222e3eb ("new helper: is_root_inode()") +# +AC_DEFUN([LC_HAVE_IS_ROOT_INODE], [ +LB_CHECK_COMPILE([if kernel has is_root_inode() ], +is_root_inode, [ + #include +],[ + is_root_inode(NULL); +],[ + AC_DEFINE(HAVE_IS_ROOT_INODE, 1, [is_root_inode defined]) +]) +]) # LC_HAVE_IS_ROOT_INODE + +# # LC_BACKING_DEV_INFO_REMOVAL # # 3.20 kernel removed backing_dev_info from address_space @@ -1143,6 +1239,24 @@ account_page_dirtied, [ ]) # LC_ACCOUNT_PAGE_DIRTIED_3ARGS # +# LC_HAVE_CRYPTO_ALLOC_SKCIPHER +# +# Kernel version 4.12 commit 7a7ffe65c8c5 +# introduced crypto_alloc_skcipher(). +# +AC_DEFUN([LC_HAVE_CRYPTO_ALLOC_SKCIPHER], [ +LB_CHECK_COMPILE([if crypto_alloc_skcipher is defined], +crypto_alloc_skcipher, [ + #include +],[ + crypto_alloc_skcipher(NULL, 0, 0); +],[ + AC_DEFINE(HAVE_CRYPTO_ALLOC_SKCIPHER, 1, + [crypto_alloc_skcipher is defined]) +]) +]) # LC_HAVE_CRYPTO_ALLOC_SKCIPHER + +# # LC_HAVE_INTERVAL_EXP_BLK_INTEGRITY # # 4.3 replace interval with interval_exp in 'struct blk_integrity' @@ -1239,6 +1353,28 @@ bio_integrity_prep_fn, [ ]) ]) # LC_BIO_INTEGRITY_PREP_FN +# LC_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL +# +# 13 kernel integrity API has changed and in 4.13+ +# (as well as in rhel 8.4) bio_integrity_prep() returns boolean true +# on success. +# +AC_DEFUN([LC_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL], [ +LB_CHECK_COMPILE([if 'bio_integrity_prep_fn' returns bool], +bio_integrity_prep, [ + #include + #include +],[ + #pragma GCC diagnostic warning "-Werror" + typedef bool (*bio_integrity_prep_type)(struct bio *bio) ; + + typecheck_fn(bio_integrity_prep_type, bio_integrity_prep); +],[ + AC_DEFINE(HAVE_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL, 1, + [bio_integrity_prep_fn returns bool]) +]) +]) # LC_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL + # # LC_HAVE_BI_OPF # @@ -1287,8 +1423,7 @@ LB_CHECK_COMPILE([if kernel has clean_bdev_aliases], have_clean_bdev_aliases, [ #include ],[ - struct block_device bdev; - clean_bdev_aliases(&bdev,1,1); + clean_bdev_aliases(NULL,1,1); ], [ AC_DEFINE(HAVE_CLEAN_BDEV_ALIASES, 1, [kernel has clean_bdev_aliases]) @@ -1485,6 +1620,26 @@ lock_page_memcg, [ ]) # LC_LOCK_PAGE_MEMCG # +# LC_D_INIT +# +# Kernel version 4.7-rc5 commit 285b102d3b745f3c2c110c9c327741d87e64aacc +# add new d_init to initialize dentry at allocation time +# +AC_DEFUN([LC_D_INIT], [ +LB_CHECK_COMPILE([if dentry operations supports 'd_init'], +d_init, [ + #include +],[ + struct dentry_operations ops = { }; + int rc; + + rc = ops.d_init(NULL); +],[ + AC_DEFINE(HAVE_D_INIT, 1, ['d_init' exists]) +]) +]) # LC_D_INIT + +# # LC_DIRECTIO_2ARGS # # Kernel version 4.7 commit c8b8e32d700fe943a935e435ae251364d016c497 @@ -1955,6 +2110,33 @@ bi_bdev, [ ]) # LC_BI_BDEV # +# LC_INTERVAL_TREE_CACHED +# +# 4.14 f808c13fd3738948e10196496959871130612b61 +# switched INTERVAL_TREE_DEFINE to use cached RB_Trees. +# +AC_DEFUN([LC_INTERVAL_TREE_CACHED], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if interval_trees use rb_tree_cached], +itree_cached, [ + #include + struct foo { struct rb_node rb; int last; int a,b;}; + #define START(n) ((n)->a) + #define LAST(n) ((n)->b) + struct rb_root_cached tree; + INTERVAL_TREE_DEFINE(struct foo, rb, int, last, + START, LAST, , foo); +],[ + foo_insert(NULL, &tree); +],[ + AC_DEFINE(HAVE_INTERVAL_TREE_CACHED, 1, + [interval trees use rb_tree_cached]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_INTERVAL_TREE_CACHED + +# # LC_IS_ENCRYPTED # # 4.14 introduced IS_ENCRYPTED and S_ENCRYPTED @@ -2031,6 +2213,26 @@ VM_FAULT_RETRY, [ ]) # LC_VM_FAULT_RETRY # +# LC_ALLOC_FILE_PSEUDO +# +# kernel 4.18-rc1 commit d93aa9d82aea80b80f225dbf9c7986df444d8106 +# new wrapper: alloc_file_pseudo() +# +AC_DEFUN([LC_ALLOC_FILE_PSEUDO], [ +LB_CHECK_COMPILE([if 'alloc_file_pseudo' is defined], +alloc_file_pseudo, [ + #include +],[ + struct file *file; + file = alloc_file_pseudo(NULL, NULL, "[test]", + 00000002, NULL); +],[ + AC_DEFINE(HAVE_ALLOC_FILE_PSEUDO, 1, + ['alloc_file_pseudo' exist]) +]) +]) # LC_ALLOC_FILE_PSEUDO + +# # LC_INODE_TIMESPEC64 # # kernel 4.17-rc7 commit 8efd6894ff089adeeac7cb9f32125b85d963d1bc @@ -2068,26 +2270,26 @@ EXTRA_KCFLAGS="$tmp_flags" ]) # LC_INODE_TIMESPEC64 # -# LC___XA_SET_MARK +# LC_RADIX_TREE_TAG_SET # # kernel 4.20 commit v4.19-rc5-248-g9b89a0355144 # xarray: Add XArray marks - replaced radix_tree_tag_set # -AC_DEFUN([LC___XA_SET_MARK], [ +AC_DEFUN([LC_RADIX_TREE_TAG_SET], [ tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" -LB_CHECK_COMPILE([if '__xa_set_mark' exists], -__xa_set_mark, [ +LB_CHECK_COMPILE([if 'radix_tree_tag_set' exists], +radix_tree_tag_set, [ #include #include ],[ radix_tree_tag_set(NULL, 0, PAGECACHE_TAG_DIRTY); ],[ AC_DEFINE(HAVE_RADIX_TREE_TAG_SET, 1, - [__xa_set_mark exists]) + [radix_tree_tag_set exists]) ]) EXTRA_KCFLAGS="$tmp_flags" -]) # LC___XA_SET_MARK +]) # LC_RADIX_TREE_TAG_SET # # LC_UAPI_LINUX_MOUNT_H @@ -2271,13 +2473,7 @@ fscrypt_support, [ ],[ fscrypt_ioctl_get_policy_ex(NULL, NULL); ],[ - dnl When Lustre supports file name encryption, restore "yes" value - dnl for has_fscrypt_support and remove warning message. - has_fscrypt_support="no" - AC_MSG_WARN([ -This version of Lustre lacks file name encryption support, -so it cannot make use of in-kernel fscrypt. -Will use embedded llcrypt if possible.]) + has_fscrypt_support="yes" ]) ]) # LC_FSCRYPT_SUPPORT @@ -2298,11 +2494,6 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_CONFIG_FHANDLE LC_CONFIG_GSS - LC_GLIBC_SUPPORT_FHANDLES - LC_GLIBC_SUPPORT_COPY_FILE_RANGE - LC_OPENSSL_SSK - LC_OPENSSL_GETSEPOL - # 3.10 LC_HAVE_PROJECT_QUOTA @@ -2319,6 +2510,7 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_OLDSIZE_TRUNCATE_PAGECACHE LC_PTR_ERR_OR_ZERO_MISSING LC_KIOCB_KI_LEFT + LC_REGISTER_SHRINKER_RET # 3.13 LC_VFS_RENAME_5ARGS @@ -2352,6 +2544,7 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_KIOCB_HAS_NBYTES LC_HAVE_DQUOT_QC_DQBLK LC_HAVE_AIO_COMPLETE + LC_HAVE_IS_ROOT_INODE # 3.20 LC_BACKING_DEV_INFO_REMOVAL @@ -2366,6 +2559,7 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_BIO_ENDIO_USES_ONE_ARG LC_SYMLINK_OPS_USE_NAMEIDATA LC_ACCOUNT_PAGE_DIRTIED_3ARGS + LC_HAVE_CRYPTO_ALLOC_SKCIPHER # 4.3 LC_HAVE_INTERVAL_EXP_BLK_INTEGRITY @@ -2395,6 +2589,7 @@ AC_DEFUN([LC_PROG_LINUX], [ # 4.7 LC_D_IN_LOOKUP + LC_D_INIT LC_DIRECTIO_2ARGS LC_GENERIC_WRITE_SYNC_2ARGS LC_FOP_ITERATE_SHARED @@ -2430,10 +2625,13 @@ AC_DEFUN([LC_PROG_LINUX], [ # 4.13 LC_BIO_INTEGRITY_ENABLED + LC_BIO_INTEGRITY_PREP_FN_RETURNS_BOOL + LC_HAVE_GET_INODE_USAGE # 4.14 LC_PAGEVEC_INIT_ONE_PARAM LC_BI_BDEV + LC_INTERVAL_TREE_CACHED # 4.17 LC_VM_FAULT_T @@ -2441,10 +2639,11 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_I_PAGES # 4.18 + LC_ALLOC_FILE_PSEUDO LC_INODE_TIMESPEC64 # 4.20 - LC___XA_SET_MARK + LC_RADIX_TREE_TAG_SET LC_UAPI_LINUX_MOUNT_H LC_HAVE_SUNRPC_CACHE_HASH_LOCK_IS_A_SPINLOCK @@ -2614,21 +2813,23 @@ AC_SUBST(OSDADDON) 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]), + AC_HELP_STRING([--enable-crypto=yes|no|in-kernel], + [enable Lustre client crypto (default is yes), use 'in-kernel' to force use of in-kernel fscrypt instead of embedded llcrypt]), [], [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$enable_crypto" = xin-kernel], [ + AS_IF([test "x$has_fscrypt_support" = xyes], [ + AC_DEFINE(HAVE_LUSTRE_CRYPTO, 1, [Enable Lustre client crypto via in-kernel fscrypt])], [ + AC_MSG_ERROR([Lustre client crypto cannot be enabled via in-kernel fscrypt.]) + enable_crypto=no])], [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_crypto="embedded llcrypt" 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.])]) @@ -2746,7 +2947,7 @@ AC_ARG_ENABLE([lu_ref], [], [enable_lu_ref="no"]) AC_MSG_RESULT([$enable_lu_ref]) AS_IF([test "x$enable_lu_ref" = xyes], - [AC_DEFINE([USE_LU_REF], 1, + [AC_DEFINE([CONFIG_LUSTRE_DEBUG_LU_REF], 1, [enable lu_ref reference tracking code])]) AC_MSG_CHECKING([whether to enable page state tracking]) @@ -2836,9 +3037,13 @@ lustre/doc/Makefile lustre/include/Makefile lustre/include/lustre/Makefile lustre/include/uapi/linux/lustre/Makefile +lustre/kernel_patches/targets/4.18-rhel8.5.target +lustre/kernel_patches/targets/4.18-rhel8.4.target +lustre/kernel_patches/targets/4.18-rhel8.3.target 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.9.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 @@ -2848,6 +3053,8 @@ lustre/kernel_patches/targets/4.14-rhel7.6.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/4.12-sles15sp2.target +lustre/kernel_patches/targets/5.3-sles15sp3.target lustre/kernel_patches/targets/3.x-fc18.target lustre/ldlm/Makefile lustre/fid/Makefile @@ -2897,6 +3104,8 @@ lustre/scripts/Makefile lustre/scripts/systemd/Makefile lustre/tests/Makefile lustre/tests/mpi/Makefile +lustre/tests/lutf/Makefile +lustre/tests/lutf/src/Makefile lustre/tests/kernel/Makefile lustre/tests/kernel/autoMakefile lustre/utils/Makefile