X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fautoconf%2Flustre-core.m4;h=b5df23faf2604739a1fe8b3fe6cd8191561c3a12;hp=6143d96f27d7b9c37d99eaa7bcfccf83d58f8541;hb=047347170b8aece4314ccf79a707db24986fa230;hpb=cdaa22f64348b19bc9e2aaf145b58e508ea337db diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index 6143d96..b5df23f 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) @@ -92,7 +131,7 @@ Lustre requires that Linux is configured with at least a 8KB stack. AC_DEFUN([LC_MDS_MAX_THREADS], [ AC_MSG_CHECKING([for maximum number of MDS threads]) AC_ARG_WITH([mds_max_threads], - AC_HELP_STRING([--with-mds-max-threads=count], + AS_HELP_STRING([--with-mds-max-threads=count], [maximum threads available on the MDS: (default=512)]), [AC_DEFINE_UNQUOTED(MDS_MAX_THREADS, $with_mds_max_threads, [maximum number of MDS threads])]) @@ -107,7 +146,7 @@ AC_MSG_RESULT([$with_mds_max_threads]) AC_DEFUN([LC_CONFIG_PINGER], [ AC_MSG_CHECKING([whether to enable Lustre pinger support]) AC_ARG_ENABLE([pinger], - AC_HELP_STRING([--disable-pinger], + AS_HELP_STRING([--disable-pinger], [disable recovery pinger support]), [], [enable_pinger="yes"]) AC_MSG_RESULT([$enable_pinger]) @@ -123,7 +162,7 @@ AS_IF([test "x$enable_pinger" != xno], AC_DEFUN([LC_CONFIG_CHECKSUM], [ AC_MSG_CHECKING([whether to enable data checksum support]) AC_ARG_ENABLE([checksum], - AC_HELP_STRING([--disable-checksum], + AS_HELP_STRING([--disable-checksum], [disable data checksum support]), [], [enable_checksum="yes"]) AC_MSG_RESULT([$enable_checksum]) @@ -139,7 +178,7 @@ AS_IF([test "x$enable_checksum" != xno], AC_DEFUN([LC_CONFIG_FLOCK], [ AC_MSG_CHECKING([whether to enable flock by default]) AC_ARG_ENABLE([flock], - AC_HELP_STRING([--disable-flock], + AS_HELP_STRING([--disable-flock], [disable flock by default]), [], [enable_flock="yes"]) AC_MSG_RESULT([$enable_flock]) @@ -155,7 +194,7 @@ AS_IF([test "x$enable_flock" != xno], AC_DEFUN([LC_CONFIG_HEALTH_CHECK_WRITE], [ AC_MSG_CHECKING([whether to enable a write with the health check]) AC_ARG_ENABLE([health_write], - AC_HELP_STRING([--enable-health_write], + AS_HELP_STRING([--enable-health_write], [enable disk writes when doing health check]), [], [enable_health_write="no"]) AC_MSG_RESULT([$enable_health_write]) @@ -169,7 +208,7 @@ AS_IF([test "x$enable_health_write" != xno], AC_DEFUN([LC_CONFIG_LRU_RESIZE], [ AC_MSG_CHECKING([whether to enable lru self-adjusting]) AC_ARG_ENABLE([lru_resize], - AC_HELP_STRING([--enable-lru-resize], + AS_HELP_STRING([--enable-lru-resize], [enable lru resize support]), [], [enable_lru_resize="yes"]) AC_MSG_RESULT([$enable_lru_resize]) @@ -227,9 +266,11 @@ LB_CHECK_CONFIG_IM([CRYPTO_MD5], [], AC_DEFUN([LC_CONFIG_GSS_KEYRING], [ AC_MSG_CHECKING([whether to enable gss keyring backend]) AC_ARG_ENABLE([gss_keyring], - [AC_HELP_STRING([--disable-gss-keyring], + [AS_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 @@ -291,7 +335,7 @@ kernel SUNRPC support is required by using GSS. AC_DEFUN([LC_CONFIG_GSS], [ AC_MSG_CHECKING([whether to enable gss support]) AC_ARG_ENABLE([gss], - [AC_HELP_STRING([--enable-gss], [enable gss support])], + [AS_HELP_STRING([--enable-gss], [enable gss support])], [], [enable_gss="auto"]) AC_MSG_RESULT([$enable_gss]) @@ -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" ]) @@ -400,21 +446,6 @@ AC_DEFUN([LC_HAVE_LIBAIO], [ AC_MSG_WARN([libaio is not installed in the system])) ]) # LC_HAVE_LIBAIO -AC_DEFUN([LC_HAVE_PROJECT_QUOTA], [ -LB_CHECK_COMPILE([if get_projid exists], -get_projid, [ - struct inode; - #include -],[ - struct dquot_operations ops = { }; - - ops.get_projid(NULL, NULL); -],[ - AC_DEFINE(HAVE_PROJECT_QUOTA, 1, - [get_projid function exists]) -]) -]) # LC_HAVE_PROJECT_QUOTA - # # LC_INVALIDATE_RANGE # @@ -619,6 +650,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 +1045,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 @@ -1035,6 +1101,26 @@ bdi_cap_map_copy, [ ]) # LC_HAVE_BDI_CAP_MAP_COPY # +# LC_HAVE_PROJECT_QUOTA +# +# Kernel version v4.0-rc1-197-g847aac644e92 +# +AC_DEFUN([LC_HAVE_PROJECT_QUOTA], [ +LB_CHECK_COMPILE([if get_projid exists], +get_projid, [ + struct inode; + #include +],[ + struct dquot_operations ops = { }; + + ops.get_projid(NULL, NULL); +],[ + AC_DEFINE(HAVE_PROJECT_QUOTA, 1, + [get_projid function exists]) +]) +]) # LC_HAVE_PROJECT_QUOTA + +# # LC_IOV_ITER_RW # # 4.1 kernel has iov_iter_rw @@ -1143,6 +1229,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 +1343,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 # @@ -1484,6 +1610,46 @@ lock_page_memcg, [ ]) # LC_LOCK_PAGE_MEMCG # +# LC_HAVE_DOWN_WRITE_KILLABLE +# +# Kernel version v4.6-rc3-28-g916633a40370 +# +AC_DEFUN([LC_HAVE_DOWN_WRITE_KILLABLE], [ +LB_CHECK_COMPILE([if down_write_killable exists], +down_write_killable, [ + struct rw_semaphore sem; + #include +],[ + int rc; + + rc = down_write_killable(&sem); +],[ + AC_DEFINE(HAVE_DOWN_WRITE_KILLABLE, 1, + [down_write_killable function exists]) +]) +]) # LC_HAVE_DOWN_WRITE_KILLABLE + +# +# 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 @@ -1741,8 +1907,8 @@ LB_CHECK_COMPILE([if 'struct vm_fault' replaced virtual_address with address fie vm_fault_address, [ #include ],[ - struct vm_fault vmf; - vmf.address = NULL; + unsigned long vaddr = ((struct vm_fault *)0)->address; + (void)vaddr; ],[ AC_DEFINE(HAVE_VM_FAULT_ADDRESS, 1, [virtual_address has been replaced by address field]) @@ -1851,6 +2017,27 @@ current_time, [ ]) # LIBCFS_CURRENT_TIME # +# LC_HAVE_GET_INODE_USAGE +# +# Kernel version v4.12-rc2-43-g7a9ca53aea10 +# +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 + + +# # Kernel version 4.12-rc3 85787090a21eb749d8b347eaf9ff1a455637473c # changed struct super_block s_uuid into a proper uuid_t # @@ -1954,6 +2141,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 @@ -2030,6 +2244,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 @@ -2067,26 +2301,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 @@ -2254,9 +2488,6 @@ 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 # @@ -2270,17 +2501,133 @@ 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 # +# LC_FSCRYPT_DIGESTED_NAME +# +# Kernel 5.5-rc4 edc440e3d27fb31e6f9663cf413fad97d714c060 +# improved the format of no-key names. This results in the +# removal of FSCRYPT_FNAME_DIGEST and FSCRYPT_FNAME_DIGEST_SIZE. +# +AC_DEFUN([LC_FSCRYPT_DIGESTED_NAME], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if fscrypt has 'struct fscrypt_digested_name'], +fscrypt_digested_name, [ + #include +],[ + struct fscrypt_digested_name fname; + + fname.hash = 0; +],[ + AC_DEFINE(HAVE_FSCRYPT_DIGESTED_NAME, 1, + ['struct fscrypt_digested_name' exists]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_FSCRYPT_DIGESTED_NAME + +# +# LC_FSCRYPT_DUMMY_CONTEXT_ENABLED +# +# Kernel 5.7-rc7 ed318a6cc0b620440e65f48eb527dc3df7269ce4 +# replaces fscrypt_dummy_context_enabled() with +# fscrypt_get_dummy_context(). Later kernels rename +# fscrypt_get_dummy_context() to fscrypt_get_dummy_policy() +# which is why we test fscrypt_dummy_context_enabled(). +# +AC_DEFUN([LC_FSCRYPT_DUMMY_CONTEXT_ENABLED], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if fscrypt_dummy_context_enabled() exists], +fscrypt_dummy_context_enabled, [ + #include +],[ + fscrypt_dummy_context_enabled(NULL); +],[ + AC_DEFINE(HAVE_FSCRYPT_DUMMY_CONTEXT_ENABLED, 1, + [fscrypt_dummy_context_enabled() exists]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_FSCRYPT_DUMMY_CONTEXT_ENABLED + +# +# LC_FSCRYPT_IS_NOKEY_NAME +# +# Kernel 5.10-rc4 159e1de201b6fca10bfec50405a3b53a561096a8 +# introduced fscrypt_is_nokey_name() inline macro. While +# introduced for 5.10 kernels it was backported to earlier +# Ubuntu kernels. Also it hides the change introduced due +# to git commit 501e43fbe for kernel 5.9 which also was +# backported to earlier Ubuntu kernels. +# +AC_DEFUN([LC_FSCRYPT_IS_NOKEY_NAME], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if fscrypt_is_nokey_name() exists], +fscrypt_is_no_key_name, [ + #include +],[ + fscrypt_is_nokey_name(NULL); +],[ + AC_DEFINE(HAVE_FSCRYPT_IS_NOKEY_NAME, 1, + [fscrypt_is_nokey_name() exists]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_FSCRYPT_IS_NOKEY_NAME + +# +# LC_HAVE_USER_NAMESPACE_ARG +# +# kernel 5.12 commit 549c7297717c32ee53f156cd949e055e601f67bb +# fs: make helpers idmap mount aware +# Extend some inode methods with an additional user namespace argument. +# +AC_DEFUN([LC_HAVE_USER_NAMESPACE_ARG], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if 'inode_operations' members have user namespace argument], +user_namespace_argument, [ + #include +],[ + ((struct inode_operations *)1)->getattr((struct user_namespace *)NULL, + NULL, NULL, 0, 0); +],[ + AC_DEFINE(HAVE_USER_NAMESPACE_ARG, 1, + ['inode_operations' members have user namespace argument]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_HAVE_USER_NAMESPACE_ARG + +# +# LC_HAVE_GET_ACL_RCU_ARG +# +# kernel 5.15 commit 0cad6246621b5887d5b33fea84219d2a71f2f99a +# vfs: add rcu argument to ->get_acl() callback +# Add a rcu argument to the ->get_acl() callback to allow +# get_cached_acl_rcu() to call the ->get_acl() method. +# +AC_DEFUN([LC_HAVE_GET_ACL_RCU_ARG], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if 'get_acl' has a rcu argument], +get_acl_rcu_argument, [ + #include +],[ + ((struct inode_operations *)1)->get_acl((struct inode *)NULL, 0, false); +],[ + AC_DEFINE(HAVE_GET_ACL_RCU_ARG, 1, + ['get_acl' has a rcu argument]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_HAVE_GET_ACL_RCU_ARG + +AC_DEFUN([LC_PROG_LINUX_SRC], []) +AC_DEFUN([LC_PROG_LINUX_RESULTS], []) + +# # LC_PROG_LINUX # # Lustre linux kernel checks @@ -2297,11 +2644,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 @@ -2318,6 +2660,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 @@ -2351,6 +2694,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 @@ -2365,6 +2709,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 @@ -2391,9 +2736,11 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_HAVE_IN_COMPAT_SYSCALL LC_HAVE_XATTR_HANDLER_INODE_PARAM LC_LOCK_PAGE_MEMCG + LC_HAVE_DOWN_WRITE_KILLABLE # 4.7 LC_D_IN_LOOKUP + LC_D_INIT LC_DIRECTIO_2ARGS LC_GENERIC_WRITE_SYNC_2ARGS LC_FOP_ITERATE_SHARED @@ -2429,10 +2776,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 @@ -2440,10 +2790,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 @@ -2459,6 +2810,21 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_BIO_BI_PHYS_SEGMENTS LC_LM_COMPARE_OWNER_EXISTS + # 5.5 + LC_FSCRYPT_DIGESTED_NAME + + # 5.7 + LC_FSCRYPT_DUMMY_CONTEXT_ENABLED + + # 5.10 + LC_FSCRYPT_IS_NOKEY_NAME + + # 5.12 + LC_HAVE_USER_NAMESPACE_ARG + + # 5.15 + LC_HAVE_GET_ACL_RCU_ARG + # kernel patch to extend integrity interface LC_BIO_INTEGRITY_PREP_FN @@ -2478,7 +2844,7 @@ AC_DEFUN([LC_PROG_LINUX], [ AC_DEFUN([LC_CONFIG_CLIENT], [ AC_MSG_CHECKING([whether to build Lustre client support]) AC_ARG_ENABLE([client], - AC_HELP_STRING([--disable-client], + AS_HELP_STRING([--disable-client], [disable Lustre client support]), [], [enable_client="yes"]) AC_MSG_RESULT([$enable_client]) @@ -2489,7 +2855,7 @@ AC_MSG_RESULT([$enable_client]) # AC_DEFUN([LB_CONFIG_MPITESTS], [ AC_ARG_ENABLE([mpitests], - AC_HELP_STRING([--enable-mpitests=], + AS_HELP_STRING([--enable-mpitests=], [include mpi tests]), [ enable_mpitests="yes" case $enableval in @@ -2540,7 +2906,7 @@ AC_ARG_ENABLE([mpitests], AC_DEFUN([LC_CONFIG_QUOTA], [ AC_MSG_CHECKING([whether to enable quota support global control]) AC_ARG_ENABLE([quota], - AC_HELP_STRING([--enable-quota], + AS_HELP_STRING([--enable-quota], [enable quota support]), [], [enable_quota="yes"]) AS_IF([test "x$enable_quota" = xyes], @@ -2571,7 +2937,7 @@ AS_IF([test "x$enable_quota" != xno -a "x$enable_utils" != xno], [ AC_DEFUN([LC_OSD_ADDON], [ AC_MSG_CHECKING([whether to use OSD addon]) AC_ARG_WITH([osd], - AC_HELP_STRING([--with-osd=path], + AS_HELP_STRING([--with-osd=path], [set path to optional osd]), [ case "$with_osd" in @@ -2613,21 +2979,24 @@ 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]), + AS_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 + AC_DEFINE(HAVE_FSCRYPT_DUMMY_CONTEXT_ENABLED, 1, [embedded llcrypt uses llcrypt_dummy_context_enabled()]) + 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.])]) @@ -2711,7 +3080,7 @@ AC_CHECK_LIB([keyutils], [add_key]) # Super safe df AC_MSG_CHECKING([whether to report minimum OST free space]) AC_ARG_ENABLE([mindf], - AC_HELP_STRING([--enable-mindf], + AS_HELP_STRING([--enable-mindf], [Make statfs report the minimum available space on any single OST instead of the sum of free space on all OSTs]), [], [enable_mindf="no"]) AC_MSG_RESULT([$enable_mindf]) @@ -2720,7 +3089,7 @@ AS_IF([test "$enable_mindf" = "yes"], AC_MSG_CHECKING([whether to randomly failing memory alloc]) AC_ARG_ENABLE([fail_alloc], - AC_HELP_STRING([--disable-fail-alloc], + AS_HELP_STRING([--disable-fail-alloc], [disable randomly alloc failure]), [], [enable_fail_alloc="yes"]) AC_MSG_RESULT([$enable_fail_alloc]) @@ -2730,7 +3099,7 @@ AS_IF([test "x$enable_fail_alloc" != xno], AC_MSG_CHECKING([whether to check invariants (expensive cpu-wise)]) AC_ARG_ENABLE([invariants], - AC_HELP_STRING([--enable-invariants], + AS_HELP_STRING([--enable-invariants], [enable invariant checking (cpu intensive)]), [], [enable_invariants="no"]) AC_MSG_RESULT([$enable_invariants]) @@ -2740,17 +3109,17 @@ AS_IF([test "x$enable_invariants" = xyes], AC_MSG_CHECKING([whether to track references with lu_ref]) AC_ARG_ENABLE([lu_ref], - AC_HELP_STRING([--enable-lu_ref], + AS_HELP_STRING([--enable-lu_ref], [enable lu_ref reference tracking code]), [], [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]) AC_ARG_ENABLE([pgstate-track], - AC_HELP_STRING([--enable-pgstate-track], + AS_HELP_STRING([--enable-pgstate-track], [enable page state tracking]), [], [enable_pgstat_track="no"]) AC_MSG_RESULT([$enable_pgstat_track]) @@ -2835,6 +3204,10 @@ lustre/doc/Makefile lustre/include/Makefile lustre/include/lustre/Makefile lustre/include/uapi/linux/lustre/Makefile +lustre/kernel_patches/targets/4.18-rhel8.6.target +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 @@ -2848,9 +3221,12 @@ 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-sles15sp2.target +lustre/kernel_patches/targets/5.3-sles15sp3.target lustre/kernel_patches/targets/3.x-fc18.target lustre/ldlm/Makefile +lustre/ec/autoMakefile +lustre/ec/Makefile lustre/fid/Makefile lustre/fid/autoMakefile lustre/llite/Makefile @@ -2898,6 +3274,9 @@ lustre/scripts/Makefile lustre/scripts/systemd/Makefile lustre/tests/Makefile lustre/tests/mpi/Makefile +lustre/tests/iabf/Makefile +lustre/tests/lutf/Makefile +lustre/tests/lutf/src/Makefile lustre/tests/kernel/Makefile lustre/tests/kernel/autoMakefile lustre/utils/Makefile