]) # LC_GLIBC_SUPPORT_FHANDLES
#
-# LC_FUNC_DEV_SET_RDONLY
-#
-# check whether dev_set_rdonly is exported. This is needed until we
-# have another mechanism to fence IO from the underlying device.
-#
-AC_DEFUN([LC_FUNC_DEV_SET_RDONLY], [
-LB_CHECK_EXPORT([dev_set_rdonly], [block/ll_rw_block.c block/blk-core.c],
- [AC_DEFINE(HAVE_DEV_SET_RDONLY, 1,
- [kernel exports dev_set_rdonly])],
- [AC_MSG_WARN([kernel missing dev_set_rdonly patch for testing])])
-]) # LC_FUNC_DEV_SET_RDONLY
-
-#
# LC_STACK_SIZE
#
# Ensure the stack size is at least 8k in Lustre server (all kernels)
]) # 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
]) # LC_BLK_QUEUE_MAX_SEGMENTS
#
+# LC_HAVE_XATTR_HANDLER_FLAGS
+#
+# 2.6.33 added a private flag to xattr_handler
+#
+AC_DEFUN([LC_HAVE_XATTR_HANDLER_FLAGS], [
+LB_CHECK_COMPILE([if 'struct xattr_handler' has flags field],
+xattr_handler_flags, [
+ #include <linux/xattr.h>
+],[
+ struct xattr_handler handler;
+
+ handler.flags = 0;
+],[
+ AC_DEFINE(HAVE_XATTR_HANDLER_FLAGS, 1, [flags field exist])
+])
+]) # LC_HAVE_XATTR_HANDLER_FLAGS
+
+#
# LC_HAVE_DQUOT_FS_DISK_QUOTA
#
# 2.6.34 has quotactl_ops->[sg]et_dqblk that take struct fs_disk_quota
]) # LC_HAVE_TRUNCATE_IPAGES_FINAL
#
+# LC_IOPS_RENAME_WITH_FLAGS
+#
+# 3.14 has inode_operations->rename with 5 args
+# commit 520c8b16505236fc82daa352e6c5e73cd9870cff
+#
+AC_DEFUN([LC_IOPS_RENAME_WITH_FLAGS], [
+LB_CHECK_COMPILE([if 'inode_operations->rename' taken flags as argument],
+iops_rename_with_flags, [
+ #include <linux/fs.h>
+],[
+ struct inode *i1 = NULL, *i2 = NULL;
+ struct dentry *d1 = NULL, *d2 = NULL;
+ int rc;
+ rc = ((struct inode_operations *)0)->rename(i1, d1, i2, d2, 0);
+], [
+ AC_DEFINE(HAVE_IOPS_RENAME_WITH_FLAGS, 1,
+ [inode_operations->rename need flags as argument])
+])
+]) # LC_IOPS_RENAME_WITH_FLAGS
+
+#
# LC_VFS_RENAME_6ARGS
#
# 3.15 has vfs_rename with 6 args
]) # LC_HAVE_CACHE_HEAD_HLIST
#
+# LC_HAVE_XATTR_HANDLER_SIMPLIFIED
+#
+# Kernel version 4.3 commit e409de992e3ea3674393465f07cc71c948edd87a
+# simplified xattr_handler handling by passing in the handler pointer
+#
+AC_DEFUN([LC_HAVE_XATTR_HANDLER_SIMPLIFIED], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if 'struct xattr_handler' functions pass in handler pointer],
+xattr_handler_simplified, [
+ #include <linux/xattr.h>
+],[
+ struct xattr_handler handler;
+
+ ((struct xattr_handler *)0)->get(&handler, NULL, NULL, NULL, 0);
+ ((struct xattr_handler *)0)->set(&handler, NULL, NULL, NULL, 0, 0);
+],[
+ AC_DEFINE(HAVE_XATTR_HANDLER_SIMPLIFIED, 1, [handler pointer is parameter])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_HAVE_XATTR_HANDLER_SIMPLIFIED
+
+#
# LC_HAVE_LOCKS_LOCK_FILE_WAIT
#
# 4.4 kernel have moved locks API users to
]) # LC_HAVE_IN_COMPAT_SYSCALL
#
+# LC_HAVE_XATTR_HANDLER_INODE_PARAM
+#
+# Kernel version 4.6 commit b296821a7c42fa58baa17513b2b7b30ae66f3336
+# and commit 5930122683dff58f0846b0f0405b4bd598a3ba6a added inode parameter
+# to xattr_handler functions
+#
+AC_DEFUN([LC_HAVE_XATTR_HANDLER_INODE_PARAM], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if 'struct xattr_handler' functions have inode parameter],
+xattr_handler_inode_param, [
+ #include <linux/xattr.h>
+],[
+ const struct xattr_handler handler;
+
+ ((struct xattr_handler *)0)->get(&handler, NULL, NULL, NULL, NULL, 0);
+ ((struct xattr_handler *)0)->set(&handler, NULL, NULL, NULL, NULL, 0, 0);
+],[
+ AC_DEFINE(HAVE_XATTR_HANDLER_INODE_PARAM, 1, [needs inode parameter])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_HAVE_XATTR_HANDLER_INODE_PARAM
+
+#
# LC_DIRECTIO_2ARGS
#
# Kernel version 4.7 commit c8b8e32d700fe943a935e435ae251364d016c497
]) # LC_DIRECTIO_2ARGS
#
+# LC_GENERIC_WRITE_SYNC_2ARGS
+#
+# Kernel version 4.7 commit c8b8e32d700fe943a935e435ae251364d016c497
+# direct-io: eliminate the offset argument to ->direct_IO
+#
+AC_DEFUN([LC_GENERIC_WRITE_SYNC_2ARGS], [
+LB_CHECK_COMPILE([if 'generic_write_sync()' taken 2 arguments],
+generic_write_sync_2args, [
+ #include <linux/fs.h>
+],[
+ struct kiocb *iocb = NULL;
+ ssize_t rc;
+ rc = generic_write_sync(iocb, 0);
+],[
+ AC_DEFINE(HAVE_GENERIC_WRITE_SYNC_2ARGS, 1,
+ [generic_write_sync need 2 arguments])
+])
+]) # LC_GENERIC_WRITE_SYNC_2ARGS
+
+#
# LC_HAVE_POSIX_ACL_VALID_USER_NS
#
# 4.8 posix_acl_valid takes struct user_namespace
]) # LC_D_COMPARE_4ARGS
#
+# LC_FULL_NAME_HASH_3ARGS
+#
+# Kernel version 4.8 commit 8387ff2577eb9ed245df9a39947f66976c6bcd02
+# vfs: make the string hashes salt the hash
+#
+AC_DEFUN([LC_FULL_NAME_HASH_3ARGS], [
+LB_CHECK_COMPILE([if 'full_name_hash' taken 3 arguments],
+full_name_hash_3args, [
+ #include <linux/stringhash.h>
+],[
+ unsigned int hash;
+ hash = full_name_hash(NULL,NULL,0);
+],[
+ AC_DEFINE(HAVE_FULL_NAME_HASH_3ARGS, 1,
+ [full_name_hash need 3 arguments])
+])
+]) # LC_FULL_NAME_HASH_3ARGS
+
+#
+# LC_STRUCT_POSIX_ACL_XATTR
+#
+# Kernel version 4.8 commit 2211d5ba5c6c4e972ba6dbc912b2897425ea6621
+# posix_acl: xattr representation cleanups
+#
+AC_DEFUN([LC_STRUCT_POSIX_ACL_XATTR], [
+LB_CHECK_COMPILE([if 'struct posix_acl_xattr_{header,entry}' defined],
+struct_posix_acl_xattr, [
+ #include <linux/fs.h>
+ #include <linux/posix_acl_xattr.h>
+],[
+ struct posix_acl_xattr_header *h = NULL;
+ struct posix_acl_xattr_entry *e;
+ e = (void *)(h + 1);
+],[
+ AC_DEFINE(HAVE_STRUCT_POSIX_ACL_XATTR, 1,
+ [struct posix_acl_xattr_{header,entry} defined])
+])
+]) # LC_STRUCT_POSIX_ACL_XATTR
+
+#
+# LC_IOP_XATTR
+#
+# Kernel version 4.8 commit fd50ecaddf8372a1d96e0daeaac0f93cf04e4d42
+# removed {get,set,remove}xattr inode operations
+#
+AC_DEFUN([LC_IOP_XATTR], [
+LB_CHECK_COMPILE([if 'inode_operations' has {get,set,remove}xattr members],
+inode_ops_xattr, [
+ #include <linux/fs.h>
+],[
+ struct inode_operations iop;
+ iop.setxattr = NULL;
+ iop.getxattr = NULL;
+ iop.removexattr = NULL;
+],[
+ AC_DEFINE(HAVE_IOP_XATTR, 1,
+ [inode_operations has {get,set,remove}xattr members])
+])
+]) # LC_IOP_XATTR
+
+#
+# LC_GROUP_INFO_GID
+#
+# Kernel version 4.9 commit 81243eacfa400f5f7b89f4c2323d0de9982bb0fb
+# cred: simpler, 1D supplementary groups
+#
+AC_DEFUN([LC_GROUP_INFO_GID], [
+LB_CHECK_COMPILE([if 'struct group_info' has member 'gid'],
+group_info_gid, [
+ #include <linux/cred.h>
+],[
+ kgid_t *p;
+ p = ((struct group_info *)0)->gid;
+],[
+ AC_DEFINE(HAVE_GROUP_INFO_GID, 1,
+ [struct group_info has member gid])
+])
+]) # LC_GROUP_INFO_GID
+
+#
+# LC_VFS_SETXATTR
+#
+# Kernel version 4.9 commit 5d6c31910bc0713e37628dc0ce677dcb13c8ccf4
+# added __vfs_{get,set,remove}xattr helpers
+#
+AC_DEFUN([LC_VFS_SETXATTR], [
+LB_CHECK_COMPILE([if '__vfs_setxattr' helper is available],
+vfs_setxattr, [
+ #include <linux/xattr.h>
+],[
+ __vfs_setxattr(NULL, NULL, NULL, NULL, 0, 0);
+],[
+ AC_DEFINE(HAVE_VFS_SETXATTR, 1,
+ ['__vfs_setxattr is available])
+])
+]) # LC_VFS_SETXATTR
+
+#
+# LC_IOP_GENERIC_READLINK
+#
+# Kernel version 4.10 commit dfeef68862edd7d4bafe68ef7aeb5f658ef24bb5
+# removed generic_readlink from individual file systems
+#
+AC_DEFUN([LC_IOP_GENERIC_READLINK], [
+LB_CHECK_COMPILE([if 'generic_readlink' still exist],
+inode_ops_readlink, [
+ #include <linux/fs.h>
+],[
+ struct inode_operations iop;
+ iop.readlink = generic_readlink;
+],[
+ AC_DEFINE(HAVE_IOP_GENERIC_READLINK, 1,
+ [generic_readlink has been removed])
+])
+]) # LC_IOP_GENERIC_READLINK
+
+#
+# LC_HAVE_VM_FAULT_ADDRESS
+#
+# Kernel version 4.10 commit 1a29d85eb0f19b7d8271923d8917d7b4f5540b3e
+# removed virtual_address field. Need to use address field instead
+#
+AC_DEFUN([LC_HAVE_VM_FAULT_ADDRESS], [
+LB_CHECK_COMPILE([if 'struct vm_fault' replaced virtual_address with address field],
+vm_fault_address, [
+ #include <linux/mm.h>
+],[
+ struct vm_fault vmf;
+ vmf.address = NULL;
+],[
+ AC_DEFINE(HAVE_VM_FAULT_ADDRESS, 1,
+ [virtual_address has been replaced by address field])
+])
+]) # LC_HAVE_VM_FAULT_ADDRESS
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 2.6.32
LC_BLK_QUEUE_MAX_SEGMENTS
+ # 2.6.33
+ LC_HAVE_XATTR_HANDLER_FLAGS
+
# 2.6.34
LC_HAVE_DQUOT_FS_DISK_QUOTA
LC_HAVE_DQUOT_SUSPEND
# 3.14
LC_HAVE_BVEC_ITER
LC_HAVE_TRUNCATE_IPAGES_FINAL
+ LC_IOPS_RENAME_WITH_FLAGS
# 3.15
LC_VFS_RENAME_6ARGS
# 4.3
LC_HAVE_CACHE_HEAD_HLIST
+ LC_HAVE_XATTR_HANDLER_SIMPLIFIED
# 4.4
LC_HAVE_LOCKS_LOCK_FILE_WAIT
# 4.6
LC_HAVE_IN_COMPAT_SYSCALL
+ LC_HAVE_XATTR_HANDLER_INODE_PARAM
# 4.7
LC_DIRECTIO_2ARGS
+ LC_GENERIC_WRITE_SYNC_2ARGS
# 4.8
LC_HAVE_POSIX_ACL_VALID_USER_NS
LC_D_COMPARE_4ARGS
+ LC_FULL_NAME_HASH_3ARGS
+ LC_STRUCT_POSIX_ACL_XATTR
+ LC_IOP_XATTR
+
+ # 4.9
+ LC_GROUP_INFO_GID
+ LC_VFS_SETXATTR
+
+ # 4.10
+ LC_IOP_GENERIC_READLINK
+ LC_HAVE_VM_FAULT_ADDRESS
#
AS_IF([test "x$enable_server" != xno], [
- LC_FUNC_DEV_SET_RDONLY
LC_STACK_SIZE
LC_QUOTA64
LC_QUOTA_CONFIG
AS_IF([test "x$enable_pgstat_track" = xyes],
[AC_DEFINE([CONFIG_DEBUG_PAGESTATE_TRACKING], 1,
[enable page state tracking code])])
+
+PKG_PROG_PKG_CONFIG
+AC_MSG_CHECKING([systemd unit file directory])
+AC_ARG_WITH([systemdsystemunitdir],
+ [AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
+ [Directory for systemd service files])],
+ [], [with_systemdsystemunitdir=auto])
+AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"],
+ [def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
+ AS_IF([test "x$def_systemdsystemunitdir" = "x"],
+ [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
+ [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
+ with_systemdsystemunitdir=no],
+ [with_systemdsystemunitdir="$def_systemdsystemunitdir"])])
+AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
+ [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
+AC_MSG_RESULT([$with_systemdsystemunitdir])
]) # LC_CONFIGURE
#
AM_CONDITIONAL(GSS_PIPEFS, test x$enable_gss_pipefs = xyes)
AM_CONDITIONAL(GSS_SSK, test x$enable_ssk = xyes)
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)
]) # LC_CONDITIONALS
#
lustre/quota/Makefile
lustre/quota/autoMakefile
lustre/scripts/Makefile
+lustre/scripts/systemd/Makefile
lustre/tests/Makefile
lustre/tests/mpi/Makefile
+lustre/tests/kernel/Makefile
+lustre/tests/kernel/autoMakefile
lustre/utils/Makefile
lustre/utils/gss/Makefile
lustre/osp/Makefile