]) # LC_CONFIG_CHECKSUM
#
+# LC_CONFIG_FLOCK
+#
+# enable distributed flock by default
+#
+AC_DEFUN([LC_CONFIG_FLOCK], [
+AC_MSG_CHECKING([whether to enable flock by default])
+AC_ARG_ENABLE([flock],
+ AC_HELP_STRING([--disable-flock],
+ [disable flock by default]),
+ [], [enable_flock="yes"])
+AC_MSG_RESULT([$enable_flock])
+AS_IF([test "x$enable_flock" != xno],
+ [AC_DEFINE(ENABLE_FLOCK, 1, [enable flock by default])])
+]) # LC_CONFIG_FLOCK
+
+#
# LC_CONFIG_HEALTH_CHECK_WRITE
#
# Turn off the actual write to the disk
]) # LC_CONFIG_SUNRPC
#
-# LC_HAVE_CRYPTO_HASH
-#
-# 4.6 kernel commit 896545098777564212b9e91af4c973f094649aa7
-# removed crypto_hash support. Since GSS only works with
-# crypto_hash it has to be disabled for newer distros.
-#
-AC_DEFUN([LC_HAVE_CRYPTO_HASH], [
-LB_CHECK_COMPILE([if crypto_hash API is supported],
-crypto_hash, [
- #include <linux/crypto.h>
-],[
- crypto_hash_digestsize(NULL);
-], [], [enable_gss="no"])
-])
-]) # LC_HAVE_CRYPTO_HASH
-
-#
# LC_CONFIG_GSS (default 'auto' (tests for dependencies, if found, enables))
#
# Build gss and related tools of Lustre. Currently both kernel and user space
AS_IF([test "x$enable_gss" != xno], [
LC_CONFIG_GSS_KEYRING
- LC_HAVE_CRYPTO_HASH
LC_HAVE_CRED_TGCRED
LC_KEY_TYPE_INSTANTIATE_2ARGS
sunrpc_required=$enable_gss
int main(void) {
int rc;
- HMAC_CTX ctx;
- HMAC_CTX_init(&ctx);
- rc = HMAC_Init_ex(&ctx, "test", 4, EVP_md_null(), NULL);
+ rc = HMAC_Init_ex(NULL, "test", 4, EVP_md_null(), NULL);
}
])],[AC_DEFINE(HAVE_OPENSSL_SSK, 1,
[OpenSSL HMAC functions needed for SSK])],
AC_MSG_RESULT([$enable_ssk])
]) # LC_OPENSSL_SSK
+# LC_OPENSSL_GETSEPOL
+#
+# OpenSSL is needed for l_getsepol
+AC_DEFUN([LC_OPENSSL_GETSEPOL], [
+AC_MSG_CHECKING([whether openssl-devel is present])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ #include <openssl/evp.h>
+
+ int main(void) {
+ EVP_MD_CTX *mdctx = EVP_MD_CTX_create();
+ }
+])],[
+ AC_DEFINE(HAVE_OPENSSL_GETSEPOL, 1, [openssl-devel is present])
+ enable_getsepol="yes"
+
+],[
+ enable_getsepol="no"
+ AC_MSG_WARN([
+
+No openssk-devel headers found, unable to build l_getsepol and SELinux status checking
+])
+])
+AC_MSG_RESULT([$enable_getsepol])
+]) # LC_OPENSSL_GETSEPOL
+
# LC_INODE_PERMISION_2ARGS
#
# up to v2.6.27 had a 3 arg version (inode, mask, nameidata)
]) # LC_SBOPS_EVICT_INODE
#
-# LC_FILE_FSYNC
-#
-# 2.6.35 file_operations.fsync taken 2 arguments.
-# 3.0.0 file_operations.fsync takes 4 arguments.
-#
-AC_DEFUN([LC_FILE_FSYNC], [
-LB_CHECK_COMPILE([if 'file_operations.fsync' takes 4 arguments],
-file_ops_fsync_4args, [
- #include <linux/fs.h>
-],[
- ((struct file_operations *)0)->fsync(NULL, 0, 0, 0);
-],[
- AC_DEFINE(HAVE_FILE_FSYNC_4ARGS, 1,
- [file_operations.fsync takes 4 arguments])
-],[
- LB_CHECK_COMPILE([if 'file_operations.fsync' takes 2 arguments],
- file_ops_fsync_2args, [
- #include <linux/fs.h>
- ],[
- ((struct file_operations *)0)->fsync(NULL, 0);
- ],[
- AC_DEFINE(HAVE_FILE_FSYNC_2ARGS, 1,
- [file_operations.fsync takes 2 arguments])
- ])
-])
-]) # LC_FILE_FSYNC
-
-#
# LC_KERNEL_LOCKED
#
# 2.6.37 remove kernel_locked
])
]) # LC_FS_STRUCT_SEQCOUNT
+# LC_DENTRY_PATH_RAW
+#
+# Kernel version 2.6.37 commit ec2447c278ee973d35f38e53ca16ba7f965ae33d
+# dentry_path_raw is exported
+#
+AC_DEFUN([LC_DENTRY_PATH_RAW], [
+LB_CHECK_COMPILE([if 'dentry_path_raw' exist],
+dentry_path_raw, [
+ #include <linux/dcache.h>
+],[
+ dentry_path_raw(NULL, NULL, 0);
+],[
+ AC_DEFINE(HAVE_DENTRY_PATH_RAW, 1,
+ ['dentry_path_raw' is available])
+])
+]) # LC_DENTRY_PATH_RAW
+
#
# LC_D_COMPARE_7ARGS
#
]) # LC_HAVE_BLK_PLUG
#
-# LC_IOP_TRUNCATE
-#
-# truncate callback removed since 2.6.39
-#
-AC_DEFUN([LC_IOP_TRUNCATE], [
-LB_CHECK_COMPILE([if 'inode_operations' has '.truncate' member function],
-inode_ops_truncate, [
- #include <linux/fs.h>
-],[
- ((struct inode_operations *)0)->truncate(NULL);
-],[
- AC_DEFINE(HAVE_INODEOPS_TRUNCATE, 1,
- [inode_operations has .truncate member function])
-])
-]) # LC_IOP_TRUNCATE
-
-#
# LC_HAVE_FSTYPE_MOUNT
#
# 2.6.39 replace get_sb with mount in struct file_system_type
]) # LC_HAVE_SECURITY_IINITSEC
#
+# 2.6.39 vfs_create takes a 'struct nameidata' parameter
+#
+AC_DEFUN([LC_VFS_CREATE_USE_NAMEIDATA], [
+LB_CHECK_COMPILE([if vfs_create takes a struct nameidata parameter],
+vfs_create, [
+ #include <linux/namei.h>
+ #include <linux/fs.h>
+],[
+ struct nameidata *nd;
+ vfs_create(NULL, NULL, 0, nd);
+],[
+ AC_DEFINE(HAVE_VFS_CREATE_USE_NAMEIDATA, 1,
+ [vfs_create use nameidata as parameter])
+])
+]) # LC_VFS_CREATE_USE_NAMEIDATA
+
+#
# LC_HAVE_MIGRATE_HEADER
#
# 3.3 introduces migrate_mode.h and migratepage has 4 args
]) # LC_HAVE_IS_SXID
#
+# LC_HAVE_VFS_GETATTR_2ARGS
+#
+AC_DEFUN([LC_HAVE_VFS_GETATTR_2ARGS], [
+LB_CHECK_COMPILE([if vfs_getattr takes 2 args],
+vfs_getattr, [
+ #include <linux/fs.h>
+],[
+ struct path path;
+
+ vfs_getattr(&path, NULL);
+],[
+ AC_DEFINE(HAVE_VFS_GETATTR_2ARGS, 1,
+ [vfs_getattr takes 2 args])
+])
+]) # LC_HAVE_VFS_GETATTR_2ARGS
+
+#
# LC_HAVE_REMOVE_PROC_SUBTREE
#
# 3.10 introduced remove_proc_subtree
]) # LC_HAVE_SECURITY_DENTRY_INIT_SECURITY
#
+# 3.10 exports security_inode_listsecurity
+#
+AC_DEFUN([LC_HAVE_SECURITY_INODE_LISTSECURITY], [
+LB_CHECK_COMPILE([if security_inode_listsecurity() is available/exported],
+security_inode_listsecurity, [
+ #include <linux/security.h>
+],[
+ security_inode_listsecurity(NULL, NULL, 0);
+],[
+ AC_DEFINE(HAVE_SECURITY_INODE_LISTSECURITY, 1,
+ [security_inode_listsecurity() is available/exported])
+])
+]) # LC_HAVE_SECURITY_INODE_LISTSECURITY
+
+#
# LC_INVALIDATE_RANGE
#
# 3.11 invalidatepage requires the length of the range to invalidate
]) # LC_KIOCB_KI_LEFT
#
+# LC_INIT_LIST_HEAD_RCU
+#
+# 3.12 added INIT_LIST_HEAD_RCU in commit 2a855b644c310d5db5
+# which is unfortunately an inline function and not a macro
+# that can be tested directly, so it needs a configure check.
+#
+AC_DEFUN([LC_INIT_LIST_HEAD_RCU], [
+LB_CHECK_COMPILE([if 'INIT_LIST_HEAD_RCU' exists],
+init_list_head_rcu, [
+ #include <linux/list.h>
+ #include <linux/rculist.h>
+],[
+ struct list_head list;
+ INIT_LIST_HEAD_RCU(&list);
+],[
+ AC_DEFINE(HAVE_INIT_LIST_HEAD_RCU, 1,
+ [INIT_LIST_HEAD_RCU exists])
+])
+]) # LC_INIT_LIST_HEAD_RCU
+
+#
# LC_VFS_RENAME_5ARGS
#
# 3.13 has vfs_rename with 5 args
])
]) # LC_VFS_UNLINK_3ARGS
+# LC_HAVE_D_IS_POSITIVE
+#
+# Kernel version 3.13 b18825a7c8e37a7cf6abb97a12a6ad71af160de7
+# d_is_positive is added
+#
+AC_DEFUN([LC_HAVE_D_IS_POSITIVE], [
+LB_CHECK_COMPILE([if 'd_is_positive' exist],
+d_is_positive, [
+ #include <linux/dcache.h>
+],[
+ d_is_positive(NULL);
+],[
+ AC_DEFINE(HAVE_D_IS_POSITIVE, 1,
+ ['d_is_positive' is available])
+])
+]) # LC_HAVE_D_IS_POSITIVE
+
#
# LC_HAVE_BVEC_ITER
#
]) # LC_IOP_SET_ACL
#
-# LC_HAVE_BI_CNT
-#
-# 4.4 redefined bi_cnt as __bi_cnt
-#
-AC_DEFUN([LC_HAVE_BI_CNT], [
-LB_CHECK_COMPILE([if Linux kernel has bi_cnt in struct bio],
-have_bi_cnt, [
- #include <asm/atomic.h>
- #include <linux/bio.h>
-],[
- struct bio bio = { };
- int cnt;
- cnt = atomic_read(&bio.bi_cnt);
-], [
- AC_DEFINE(HAVE_BI_CNT, 1,
- [struct bio has bi_cnt])
-])
-]) # LC_HAVE_BI_CNT
-
-#
-# LC_HAVE_BI_RW
-#
-# 4.4 redefined bi_rw as bi_opf
-#
-AC_DEFUN([LC_HAVE_BI_RW], [
-LB_CHECK_COMPILE([if Linux kernel has bi_rw in struct bio],
-have_bi_rw, [
- #include <linux/bio.h>
-],[
- struct bio bio;
-
- bio.bi_rw = 0;
-], [
- AC_DEFINE(HAVE_BI_RW, 1,
- [struct bio has bi_rw])
-])
-]) # LC_HAVE_BI_RW
-
-#
-# LC_HAVE_SUBMIT_BIO_2ARGS
-#
-# 4.4 removed an argument from submit_bio
-#
-AC_DEFUN([LC_HAVE_SUBMIT_BIO_2ARGS], [
-LB_CHECK_COMPILE([if submit_bio takes two arguments],
-have_submit_bio_2args, [
- #include <linux/bio.h>
-],[
- struct bio bio;
- submit_bio(READ, &bio);
-], [
- AC_DEFINE(HAVE_SUBMIT_BIO_2ARGS, 1,
- [submit_bio takes two arguments])
-])
-]) # LC_HAVE_SUBMIT_BIO_2_ARGS
-
-#
-# LC_HAVE_CLEAN_BDEV_ALIASES
-#
-# 4.4 unmap_underlying_metadata was replaced by clean_bdev_aliases
-#
-AC_DEFUN([LC_HAVE_CLEAN_BDEV_ALIASES], [
-LB_CHECK_COMPILE([if kernel has clean_bdev_aliases],
-have_clean_bdev_aliases, [
- #include <linux/buffer_head.h>
-],[
- struct block_device bdev;
- clean_bdev_aliases(&bdev,1,1);
-], [
- AC_DEFINE(HAVE_CLEAN_BDEV_ALIASES, 1,
- [kernel has clean_bdev_aliases])
-])
-]) # LC_HAVE_CLEAN_BDEV_ALIASES
-
-#
# LC_HAVE_TRUNCATE_IPAGE_FINAL
#
# 3.14 bring truncate_inode_pages_final for evict_inode
]) # LC_HAVE_SYNC_READ_WRITE
#
+# LC_HAVE___BI_CNT
+#
+# 4.1 redefined bi_cnt as __bi_cnt in commit dac56212e8127dbc0
+#
+AC_DEFUN([LC_HAVE___BI_CNT], [
+LB_CHECK_COMPILE([if Linux kernel has __bi_cnt in struct bio],
+have___bi_cnt, [
+ #include <asm/atomic.h>
+ #include <linux/bio.h>
+ #include <linux/blk_types.h>
+],[
+ struct bio bio = { };
+ int cnt;
+ cnt = atomic_read(&bio.__bi_cnt);
+], [
+ AC_DEFINE(HAVE___BI_CNT, 1,
+ [struct bio has __bi_cnt])
+])
+]) # LC_HAVE___BI_CNT
+
+#
# LC_NEW_CANCEL_DIRTY_PAGE
#
# 4.2 kernel has new cancel_dirty_page
]) # LC_HAVE_XATTR_HANDLER_SIMPLIFIED
#
+# LC_HAVE_BIP_ITER_BIO_INTEGRITY_PAYLOAD
+#
+# 4.3 replace interval with interval_exp in 'struct blk_integrity'.
+#
+AC_DEFUN([LC_HAVE_BIP_ITER_BIO_INTEGRITY_PAYLOAD], [
+LB_CHECK_COMPILE([if 'bio_integrity_payload.bip_iter' exist],
+bio_integrity_payload_bip_iter, [
+ #include <linux/bio.h>
+],[
+ ((struct bio_integrity_payload *)0)->bip_iter.bi_size = 0;
+],[
+ AC_DEFINE(HAVE_BIP_ITER_BIO_INTEGRITY_PAYLOAD, 1,
+ [bio_integrity_payload.bip_iter exist])
+])
+]) # LC_HAVE_BIP_ITER_BIO_INTEGRITY_PAYLOAD
+
+#
+# LC_BIO_INTEGRITY_PREP_FN
+#
+# Lustre kernel patch extents bio_integrity_prep to accept optional
+# generate/verify_fn as extra args.
+#
+AC_DEFUN([LC_BIO_INTEGRITY_PREP_FN], [
+LB_CHECK_COMPILE([if 'bio_integrity_prep_fn' exists],
+bio_integrity_prep_fn, [
+ #include <linux/bio.h>
+],[
+ bio_integrity_prep_fn(NULL, NULL, NULL);
+],[
+ AC_DEFINE(HAVE_BIO_INTEGRITY_PREP_FN, 1,
+ [kernel has bio_integrity_prep_fn])
+ AC_SUBST(PATCHED_INTEGRITY_INTF)
+],[
+ AC_SUBST(PATCHED_INTEGRITY_INTF, [#])
+])
+]) # LC_BIO_INTEGRITY_PREP_FN
+
+#
+# LC_HAVE_BI_OPF
+#
+# 4.4/4.8 redefined bi_rw as bi_opf (SLES12/kernel commit 4382e33ad37486)
+#
+AC_DEFUN([LC_HAVE_BI_OPF], [
+LB_CHECK_COMPILE([if Linux kernel has bi_opf in struct bio],
+have_bi_opf, [
+ #include <linux/bio.h>
+],[
+ struct bio bio;
+
+ bio.bi_opf = 0;
+], [
+ AC_DEFINE(HAVE_BI_OPF, 1,
+ [struct bio has bi_opf])
+])
+]) # LC_HAVE_BI_OPF
+
+#
+# LC_HAVE_SUBMIT_BIO_2ARGS
+#
+# 4.4 removed an argument from submit_bio
+#
+AC_DEFUN([LC_HAVE_SUBMIT_BIO_2ARGS], [
+LB_CHECK_COMPILE([if submit_bio takes two arguments],
+have_submit_bio_2args, [
+ #include <linux/bio.h>
+],[
+ struct bio bio;
+ submit_bio(READ, &bio);
+], [
+ AC_DEFINE(HAVE_SUBMIT_BIO_2ARGS, 1,
+ [submit_bio takes two arguments])
+])
+]) # LC_HAVE_SUBMIT_BIO_2_ARGS
+
+#
+# LC_HAVE_CLEAN_BDEV_ALIASES
+#
+# 4.4/4.9 unmap_underlying_metadata was replaced by clean_bdev_aliases
+# (SLES12/kernel commit 29f3ad7d8380364c)
+#
+AC_DEFUN([LC_HAVE_CLEAN_BDEV_ALIASES], [
+LB_CHECK_COMPILE([if kernel has clean_bdev_aliases],
+have_clean_bdev_aliases, [
+ #include <linux/buffer_head.h>
+],[
+ struct block_device bdev;
+ clean_bdev_aliases(&bdev,1,1);
+], [
+ AC_DEFINE(HAVE_CLEAN_BDEV_ALIASES, 1,
+ [kernel has clean_bdev_aliases])
+])
+]) # LC_HAVE_CLEAN_BDEV_ALIASES
+
+#
# LC_HAVE_LOCKS_LOCK_FILE_WAIT
#
# 4.4 kernel have moved locks API users to
]) # LC_HAVE_XATTR_HANDLER_INODE_PARAM
#
+# LC_D_IN_LOOKUP
+#
+# Kernel version 4.6 commit 85c7f81041d57cfe9dc97f4680d5586b54534a39
+# introduced parallel lookups in the VFS layer. The inline function
+# d_in_lookup was added to notify when the same item was being queried
+# at the same time.
+#
+AC_DEFUN([LC_D_IN_LOOKUP], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if 'd_in_lookup' is defined],
+d_in_lookup, [
+ #include <linux/dcache.h>
+],[
+ d_in_lookup(NULL);
+],[
+ AC_DEFINE(HAVE_D_IN_LOOKUP, 1, [d_in_lookup is defined])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_D_IN_LOOKUP
+
+#
# LC_DIRECTIO_2ARGS
#
# Kernel version 4.7 commit c8b8e32d700fe943a935e435ae251364d016c497
#
# LC_GENERIC_WRITE_SYNC_2ARGS
#
-# Kernel version 4.7 commit c8b8e32d700fe943a935e435ae251364d016c497
-# direct-io: eliminate the offset argument to ->direct_IO
+# Kernel version 4.7 commit dde0c2e79848298cc25621ad080d47f94dbd7cce
+# fs: add IOCB_SYNC and IOCB_DSYNC
#
AC_DEFUN([LC_GENERIC_WRITE_SYNC_2ARGS], [
LB_CHECK_COMPILE([if 'generic_write_sync()' taken 2 arguments],
]) # LC_GENERIC_WRITE_SYNC_2ARGS
#
+# LC_FOP_ITERATE_SHARED
+#
+# Kernel version 4.7 adds iterate_shared method to file_operations
+#
+AC_DEFUN([LC_FOP_ITERATE_SHARED], [
+LB_CHECK_COMPILE([if 'file_operations' has 'iterate_shared'],
+fop_iterate_shared, [
+ #include <linux/fs.h>
+],[
+ struct file_operations fop;
+ fop.iterate_shared = NULL;
+],[
+ AC_DEFINE(HAVE_FOP_ITERATE_SHARED, 1,
+ [file_operations has iterate_shared])
+])
+]) # LC_FOP_ITERATE_SHARED
+
+#
# LC_FOPS_ITERATE_SHARED
#
# 4.7 commit ae05327a00fd47c34dfe25294b359a3f3fef96e8
]) # LC_VM_OPERATIONS_REMOVE_VMF_ARG
#
+# LC_HAVE_KEY_USAGE_REFCOUNT
+#
+# Kernel version 4.11 commit fff292914d3a2f1efd05ca71c2ba72a3c663201e
+# converted key.usage from atomic_t to refcount_t.
+#
+AC_DEFUN([LC_HAVE_KEY_USAGE_REFCOUNT], [
+LB_CHECK_COMPILE([if 'key.usage' is refcount_t],
+key_usage_refcount, [
+ #include <linux/key.h>
+],[
+ struct key key = { };
+
+ refcount_read(&key.usage);
+],[
+ AC_DEFINE(HAVE_KEY_USAGE_REFCOUNT, 1, [key.usage is of type refcount_t])
+])
+]) #LC_HAVE_KEY_USAGE_REFCOUNT
+
+#
+# LC_HAVE_CRYPTO_MAX_ALG_NAME_128
+#
+# Kernel version 4.11 commit f437a3f477cce402dbec6537b29e9e33962c9f73
+# switched CRYPTO_MAX_ALG_NAME from 64 to 128.
+#
+AC_DEFUN([LC_HAVE_CRYPTO_MAX_ALG_NAME_128], [
+LB_CHECK_COMPILE([if 'CRYPTO_MAX_ALG_NAME' is 128],
+crypto_max_alg_name, [
+ #include <linux/crypto.h>
+],[
+ #if CRYPTO_MAX_ALG_NAME != 128
+ exit(1);
+ #endif
+],[
+ AC_DEFINE(HAVE_CRYPTO_MAX_ALG_NAME_128, 1,
+ ['CRYPTO_MAX_ALG_NAME' is 128])
+])
+]) # LC_HAVE_CRYPTO_MAX_ALG_NAME_128
+
+#
# Kernel version 4.12 commit 47f38c539e9a42344ff5a664942075bd4df93876
# CURRENT_TIME is not 64 bit time safe so it was replaced with
# current_time()
current_time, [
#include <linux/fs.h>
],[
- struct timespec ts = current_time(NULL);
+ struct iattr attr;
+
+ attr.ia_atime = current_time(NULL);
],[
AC_DEFINE(HAVE_CURRENT_TIME, 1,
[current_time() has replaced CURRENT_TIME])
]) # LIBCFS_CURRENT_TIME
#
+# Kernel version 4.12-rc3 85787090a21eb749d8b347eaf9ff1a455637473c
+# changed struct super_block s_uuid into a proper uuid_t
+#
+AC_DEFUN([LC_SUPER_BLOCK_S_UUID], [
+LB_CHECK_COMPILE([if 'struct super_block' s_uuid is uuid_t],
+super_block_s_uuid, [
+ #include <linux/fs.h>
+],[
+ struct super_block sb;
+
+ uuid_parse(NULL, &sb.s_uuid);
+],[
+ AC_DEFINE(HAVE_S_UUID_AS_UUID_T, 1, ['s_uuid' is an uuid_t])
+])
+]) # LC_SUPER_BLOCK_S_UUID
+
+#
# LC_SUPER_SETUP_BDI_NAME
#
# Kernel version 4.12 commit 9594caf216dc0fe3e318b34af0127276db661241
]) # LC_BI_STATUS
#
+# LC_UAPI_LINUX_MOUNT_H
+#
+# kernel 4.20 commit e262e32d6bde0f77fb0c95d977482fc872c51996
+# vfs: Suppress MS_* flag defs within the kernel ...
+#
+AC_DEFUN([LC_UAPI_LINUX_MOUNT_H], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if MS_RDONLY was moved to uapi/linux/mount.h],
+uapi_linux_mount, [
+ #include <uapi/linux/mount.h>
+],[
+ int x = MS_RDONLY;
+ (void)x;
+],[
+ AC_DEFINE(HAVE_UAPI_LINUX_MOUNT_H, 1,
+ [if MS_RDONLY was moved to uapi/linux/mount.h])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_UAPI_LINUX_MOUNT_H
+
+#
# LC_BIO_INTEGRITY_ENABLED
#
# 4.13 removed bio_integrity_enabled
AC_DEFUN([LC_BI_BDEV], [
LB_CHECK_COMPILE([if 'bi_bdev' exist],
bi_bdev, [
- #include <linux/blk_types.h>
+ #include <linux/bio.h>
],[
((struct bio *)0)->bi_bdev = NULL;
],[
])
]) # LC_BI_BDEV
+#
+# LC_I_PAGES
+#
+# kernel 4.17 commit b93b016313b3ba8003c3b8bb71f569af91f19fc7
+#
+AC_DEFUN([LC_I_PAGES], [
+LB_CHECK_COMPILE([if struct address_space has i_pages],
+i_pages, [
+ #include <linux/fs.h>
+],[
+ struct address_space mapping = {};
+ void *i_pages;
+
+ i_pages = &mapping.i_pages;
+],[
+ AC_DEFINE(HAVE_I_PAGES, 1,
+ [struct address_space has i_pages])
+])
+]) # LC_I_PAGES
+
+#
+# LC_VM_FAULT_T
+#
+# kernel 4.17 commit 3d3539018d2cbd12e5af4a132636ee7fd8d43ef0
+# mm: create the new vm_fault_t type
+#
+AC_DEFUN([LC_VM_FAULT_T], [
+LB_CHECK_COMPILE([if vm_fault_t type exists],
+vm_fault_t, [
+ #include <linux/mm_types.h>
+],[
+ vm_fault_t x = VM_FAULT_SIGBUS;
+ (void)x
+],[
+ AC_DEFINE(HAVE_VM_FAULT_T, 1,
+ [if vm_fault_t type exists])
+])
+]) # LC_VM_FAULT_T
+
+#
+# LC_INODE_TIMESPEC64
+#
+# kernel 4.17-rc7 commit 8efd6894ff089adeeac7cb9f32125b85d963d1bc
+# fs: add timespec64_truncate()
+# kernel 4.18 commit 95582b00838837fc07e042979320caf917ce3fe6
+# inode timestamps switched to timespec64
+# kernel 4.19-rc2 commit 976516404ff3fab2a8caa8bd6f5efc1437fed0b8
+# y2038: remove unused time interfaces
+# ...
+# timespec_trunc
+# ...
+# When inode times are timespec64 stop using the deprecated
+# time interfaces.
+#
+AC_DEFUN([LC_INODE_TIMESPEC64], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if inode timestamps are struct timespec64],
+inode_timespec64, [
+ #include <linux/fs.h>
+],[
+ struct inode inode = {};
+ struct timespec64 ts = {};
+
+ inode.i_atime = timespec64_trunc(ts, 1);
+ (void)inode;
+],[
+ AC_DEFINE(HAVE_INODE_TIMESPEC64, 1,
+ [inode times are using timespec64])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_INODE_TIMESPEC64
#
# LC_PROG_LINUX
LC_CONFIG_PINGER
LC_CONFIG_CHECKSUM
+ LC_CONFIG_FLOCK
LC_CONFIG_HEALTH_CHECK_WRITE
LC_CONFIG_LRU_RESIZE
LC_GLIBC_SUPPORT_FHANDLES
LC_CONFIG_GSS
LC_OPENSSL_SSK
+ LC_OPENSSL_GETSEPOL
# 2.6.32
LC_BLK_QUEUE_MAX_SEGMENTS
LC_HAVE_ADD_WAIT_QUEUE_EXCLUSIVE
# 2.6.35, 3.0.0
- LC_FILE_FSYNC
LC_EXPORT_SIMPLE_SETATTR
LC_EXPORT_TRUNCATE_COMPLETE_PAGE
# 2.6.37
LC_KERNEL_LOCKED
LC_FS_STRUCT_SEQCOUNT
+ LC_DENTRY_PATH_RAW
# 2.6.38
LC_BLKDEV_GET_BY_DEV
# 2.6.39
LC_HAVE_FHANDLE_SYSCALLS
LC_HAVE_FSTYPE_MOUNT
- LC_IOP_TRUNCATE
LC_HAVE_INODE_OWNER_OR_CAPABLE
LC_HAVE_SECURITY_IINITSEC
+ LC_VFS_CREATE_USE_NAMEIDATA
# 3.0
LC_DIRTY_INODE_WITH_FLAG
LC_HAVE_HLIST_FOR_EACH_3ARG
LC_HAVE_BIO_END_SECTOR
LC_HAVE_IS_SXID
+ LC_HAVE_VFS_GETATTR_2ARGS
# 3.10
LC_HAVE_REMOVE_PROC_SUBTREE
LC_HAVE_PROC_REMOVE
LC_HAVE_PROJECT_QUOTA
LC_HAVE_SECURITY_DENTRY_INIT_SECURITY
+ LC_HAVE_SECURITY_INODE_LISTSECURITY
# 3.11
LC_INVALIDATE_RANGE
LC_OLDSIZE_TRUNCATE_PAGECACHE
LC_PTR_ERR_OR_ZERO_MISSING
LC_KIOCB_KI_LEFT
+ LC_INIT_LIST_HEAD_RCU
# 3.13
LC_VFS_RENAME_5ARGS
LC_VFS_UNLINK_3ARGS
+ LC_HAVE_D_IS_POSITIVE
# 3.14
LC_HAVE_BVEC_ITER
# 4.1.0
LC_IOV_ITER_RW
LC_HAVE_SYNC_READ_WRITE
+ LC_HAVE___BI_CNT
# 4.2
LC_NEW_CANCEL_DIRTY_PAGE
# 4.3
LC_HAVE_INTERVAL_EXP_BLK_INTEGRITY
+ LC_HAVE_BIP_ITER_BIO_INTEGRITY_PAYLOAD
LC_HAVE_CACHE_HEAD_HLIST
LC_HAVE_XATTR_HANDLER_SIMPLIFIED
LC_HAVE_LOCKS_LOCK_FILE_WAIT
LC_HAVE_KEY_PAYLOAD_DATA_ARRAY
LC_HAVE_XATTR_HANDLER_NAME
- LC_HAVE_BI_CNT
- LC_HAVE_BI_RW
+ LC_HAVE_BI_OPF
LC_HAVE_SUBMIT_BIO_2ARGS
LC_HAVE_CLEAN_BDEV_ALIASES
LC_HAVE_XATTR_HANDLER_INODE_PARAM
# 4.7
+ LC_D_IN_LOOKUP
LC_DIRECTIO_2ARGS
LC_GENERIC_WRITE_SYNC_2ARGS
LC_FOPS_ITERATE_SHARED
# 4.11
LC_INODEOPS_ENHANCED_GETATTR
LC_VM_OPERATIONS_REMOVE_VMF_ARG
+ LC_HAVE_KEY_USAGE_REFCOUNT
+ LC_HAVE_CRYPTO_MAX_ALG_NAME_128
# 4.12
LC_CURRENT_TIME
+ LC_SUPER_BLOCK_S_UUID
LC_SUPER_SETUP_BDI_NAME
LC_BI_STATUS
LC_PAGEVEC_INIT_ONE_PARAM
LC_BI_BDEV
+ # 4.17
+ LC_VM_FAULT_T
+ LC_I_PAGES
+
+ # 4.18
+ LC_INODE_TIMESPEC64
+
+ # 5.0
+ LC_UAPI_LINUX_MOUNT_H
+
+ # kernel patch to extend integrity interface
+ LC_BIO_INTEGRITY_PREP_FN
+
#
AS_IF([test "x$enable_server" != xno], [
LC_STACK_SIZE
case $enableval in
yes)
MPICC_WRAPPER="mpicc"
+ MPI_BIN=$(eval which $MPICC_WRAPPER | xargs dirname)
;;
no)
enable_mpitests="no"
+ MPI_BIN=""
;;
*)
MPICC_WRAPPER=$enableval
+ MPI_BIN=$(eval echo $MPICC_WRAPPER | xargs dirname)
;;
esac
], [
enable_mpitests="yes"
MPICC_WRAPPER="mpicc"
+ MPI_BIN=$(eval which $MPICC_WRAPPER | xargs dirname)
])
if test "x$enable_mpitests" != "xno"; then
enable_mpitests=$lb_cv_mpi_tests
CC=$oldcc
fi
+ AC_SUBST(MPI_BIN)
AC_SUBST(MPICC_WRAPPER)
]) # LB_CONFIG_MPITESTS
]) # LC_QUOTA
#
-# LC_CONFIG_NODEMAP_PROC_DEBUG
-#
-# enable nodemap proc file debugging
-#
-AC_DEFUN([LC_NODEMAP_PROC_DEBUG], [
-AC_MSG_CHECKING([whether to enable nodemap proc debug])
-AC_ARG_ENABLE([nodemap_proc_debug],
- AC_HELP_STRING([--enable-nodemap-proc-debug],
- [enable nodemap proc debug]),
- [], [enable_nodemap_proc_debug="no"])
-AC_MSG_RESULT([$enable_nodemap_proc_debug])
-AS_IF([test "x$enable_nodemap_proc_debug" != xno],
- [AC_DEFINE(NODEMAP_PROC_DEBUG, 1,
- [enable nodemap proc debug support])])
-]) # LC_NODEMAP_PROC_DEBUG
-
-#
# LC_OSD_ADDON
#
# configure support for optional OSD implementation
AC_CHECK_HEADERS([ext2fs/ext2fs.h])
# lustre/utils/lfs.c
-AC_CHECK_LIB([z], [crc32], [
- AC_CHECK_HEADER([zlib.h], [], [
- AC_MSG_ERROR([zlib.h not found.])])
- ], [
- AC_MSG_ERROR([
-zlib library not found. Please install zlib development package.])
+AS_IF([test "$enable_dist" = "no"], [
+ AC_CHECK_LIB([z], [crc32], [
+ AC_CHECK_HEADER([zlib.h], [], [
+ AC_MSG_ERROR([zlib.h not found.])])
+ ], [
+ AC_MSG_ERROR([
+ zlib library not found. Please install zlib development package.])
+ ])
])
SELINUX=""
AM_CONDITIONAL(LIBPTHREAD, test x$enable_libpthread = xyes)
AM_CONDITIONAL(HAVE_SYSTEMD, test "x$with_systemdsystemunitdir" != "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)
]) # LC_CONDITIONALS
#
lustre/autoMakefile
lustre/autoconf/Makefile
lustre/conf/Makefile
+lustre/conf/resource/Makefile
lustre/contrib/Makefile
lustre/doc/Makefile
lustre/include/Makefile
lustre/include/lustre/Makefile
lustre/include/uapi/linux/lustre/Makefile
-lustre/kernel_patches/targets/3.10-rhel7.target
-lustre/kernel_patches/targets/2.6-rhel6.9.target
-lustre/kernel_patches/targets/2.6-rhel6.8.target
-lustre/kernel_patches/targets/2.6-rhel6.7.target
-lustre/kernel_patches/targets/2.6-rhel6.6.target
-lustre/kernel_patches/targets/2.6-rhel6.target
-lustre/kernel_patches/targets/2.6-rhel5.target
-lustre/kernel_patches/targets/2.6-sles11.target
+lustre/kernel_patches/targets/4.18-rhel8.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/2.6-fc11.target
-lustre/kernel_patches/targets/2.6-fc12.target
-lustre/kernel_patches/targets/2.6-fc15.target
+lustre/kernel_patches/targets/4.12-sles12sp4.target
lustre/kernel_patches/targets/3.x-fc18.target
lustre/ldlm/Makefile
lustre/fid/Makefile