Whamcloud - gitweb
LU-12189 ec: code to add support for M to N parity
[fs/lustre-release.git] / lustre / autoconf / lustre-core.m4
index 8a66bd9..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,7 +266,7 @@ 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])],
        [], [AS_IF([test "x$enable_gss" != xno], [
                        enable_gss_keyring="yes"], [
@@ -335,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])
 
@@ -446,36 +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
-
-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
-
 #
 # LC_INVALIDATE_RANGE
 #
@@ -1131,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
@@ -1620,6 +1610,26 @@ 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
@@ -2007,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
 #
@@ -2475,6 +2506,79 @@ fscrypt_support, [
 ]) # 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
@@ -2497,6 +2601,29 @@ 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], [])
 
@@ -2609,6 +2736,7 @@ 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
@@ -2682,9 +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
 
@@ -2704,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])
@@ -2715,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
@@ -2766,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],
@@ -2797,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
@@ -2839,7 +2979,7 @@ 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=yes|no|in-kernel],
+       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], [
@@ -2855,6 +2995,7 @@ AS_IF([test "x$enable_crypto" = xin-kernel], [
        [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])
+             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],
@@ -2939,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])
@@ -2948,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])
@@ -2958,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])
@@ -2968,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])
@@ -2978,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])
@@ -3063,6 +3204,7 @@ 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
@@ -3083,6 +3225,8 @@ 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
@@ -3130,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