Whamcloud - gitweb
LU-12189 ec: code to add support for M to N parity
[fs/lustre-release.git] / lustre / autoconf / lustre-core.m4
index d8755b2..b5df23f 100644 (file)
@@ -131,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])])
@@ -146,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])
@@ -162,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])
@@ -178,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])
@@ -194,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])
@@ -208,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])
@@ -266,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], [], [
@@ -287,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
 
@@ -330,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])
 
@@ -380,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"
 ])
@@ -439,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 <linux/quota.h>
-],[
-       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
 #
@@ -1109,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 <linux/quota.h>
+],[
+       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
@@ -1331,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 <linux/bio.h>
+       #include <linux/typecheck.h>
+],[
+       #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
 #
@@ -1576,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 <linux/rwsem.h>
+],[
+       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 <linux/dcache.h>
+],[
+       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
@@ -1833,8 +1907,8 @@ LB_CHECK_COMPILE([if 'struct vm_fault' replaced virtual_address with address fie
 vm_fault_address, [
        #include <linux/mm.h>
 ],[
-       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])
@@ -1943,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 <linux/quota.h>
+],[
+       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
 #
@@ -2149,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 <linux/file.h>
+],[
+       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
@@ -2186,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 <linux/fs.h>
        #include <linux/radix-tree.h>
 ],[
        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
@@ -2373,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
 #
@@ -2389,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 <linux/fscrypt.h>
+],[
+       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 <linux/fscrypt.h>
+],[
+       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 <linux/fscrypt.h>
+],[
+       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 <linux/fs.h>
+],[
+       ((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 <linux/fs.h>
+],[
+       ((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
@@ -2508,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
@@ -2546,6 +2776,8 @@ 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
@@ -2558,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
 
@@ -2577,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
 
@@ -2596,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])
@@ -2607,7 +2855,7 @@ AC_MSG_RESULT([$enable_client])
 #
 AC_DEFUN([LB_CONFIG_MPITESTS], [
 AC_ARG_ENABLE([mpitests],
-       AC_HELP_STRING([--enable-mpitests=<yes|no|mpicc wrapper>],
+       AS_HELP_STRING([--enable-mpitests=<yes|no|mpicc wrapper>],
                       [include mpi tests]), [
                enable_mpitests="yes"
                case $enableval in
@@ -2658,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],
@@ -2689,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
@@ -2731,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.])])
@@ -2829,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])
@@ -2838,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])
@@ -2848,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])
@@ -2858,7 +3109,7 @@ 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])
@@ -2868,7 +3119,7 @@ AS_IF([test "x$enable_lu_ref" = xyes],
 
 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])
@@ -2953,6 +3204,8 @@ 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
@@ -2968,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
@@ -3018,6 +3274,7 @@ 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