])])
]) # LC_QUOTA_CONFIG
+
+#[AC_DEFINE(CONFIG_LUSTRE_FS_POSIX_ACL, 1, [Enable POSIX acl])])
+#
+# LC_POSIX_ACL_CONFIG
+#
+# POSIX ACL support.
+#
+AC_DEFUN([LC_POSIX_ACL_CONFIG], [
+LB_CHECK_CONFIG_IM([FS_POSIX_ACL],
+ [AC_DEFINE(CONFIG_LUSTRE_FS_POSIX_ACL, 1, [Enable POSIX acl])
+], [ ])
+]) # LC_POSIX_ACL_CONFIG
+
+LB_CHECK_CONFIG_IM([CRYPTO_MD5], [],
+ [AC_MSG_WARN([kernel MD5 support is recommended by using GSS.])])
+
#
# LC_CONFIG_GSS_KEYRING
#
#include <linux/fs.h>
],[
struct lock_manager_operations lm_ops;
- lm_ops.lm_compare_owner = NULL;
+ lm_ops.lm_notify = NULL;
],[
AC_DEFINE(HAVE_LM_XXX_LOCK_MANAGER_OPS, 1,
[lock-manager ops renamed to lm_xxx])
]) # LC_BIO_ENDIO_USES_ONE_ARG
#
+# LC_ACCOUNT_PAGE_DIRTIED_3ARGS
+#
+# 4.2 kernel page dirtied takes 3 arguments
+#
+AC_DEFUN([LC_ACCOUNT_PAGE_DIRTIED_3ARGS], [
+LB_CHECK_COMPILE([if 'account_page_dirtied' with 3 args exists],
+account_page_dirtied, [
+ #include <linux/mm.h>
+],[
+ account_page_dirtied(NULL, NULL, NULL);
+],[
+ AC_DEFINE(HAVE_ACCOUNT_PAGE_DIRTIED_3ARGS, 1,
+ [account_page_dirtied takes three arguments])
+])
+]) # LC_ACCOUNT_PAGE_DIRTIED_3ARGS
+
+#
# LC_HAVE_INTERVAL_EXP_BLK_INTEGRITY
#
# 4.3 replace interval with interval_exp in 'struct blk_integrity'
]) # LC_D_IN_LOOKUP
#
+# LC_LOCK_PAGE_MEMCG
+#
+# Kernel version 4.6 adds lock_page_memcg
+#
+AC_DEFUN([LC_LOCK_PAGE_MEMCG], [
+LB_CHECK_COMPILE([if 'lock_page_memcg' is defined],
+lock_page_memcg, [
+ #include <linux/memcontrol.h>
+],[
+ lock_page_memcg(NULL);
+],[
+ AC_DEFINE(HAVE_LOCK_PAGE_MEMCG, 1,
+ [lock_page_memcg is defined])
+])
+]) # LC_LOCK_PAGE_MEMCG
+
+#
# LC_DIRECTIO_2ARGS
#
# Kernel version 4.7 commit c8b8e32d700fe943a935e435ae251364d016c497
#
# LC_FOP_ITERATE_SHARED
#
-# Kernel version 4.7 adds iterate_shared method to file_operations
+# Kernel v4.6-rc3-29-g6192269 adds iterate_shared method to file_operations
#
AC_DEFUN([LC_FOP_ITERATE_SHARED], [
LB_CHECK_COMPILE([if 'file_operations' has 'iterate_shared'],
]) # LC_FOP_ITERATE_SHARED
#
-# LC_FOPS_ITERATE_SHARED
-#
-# 4.7 commit ae05327a00fd47c34dfe25294b359a3f3fef96e8
-# ext4: switch to ->iterate_shared()
-# this replaces ext4_dir_operations iterate with iterate_shared.
-# dir_relaxed_shared() was also added in this commit, so we can
-# use that function to verify that the ext4_dir_operations is using
-# iterate_shared.
-#
-AC_DEFUN([LC_FOPS_ITERATE_SHARED], [
-LB_CHECK_COMPILE([if ext4_dir_operations uses iterate_shared],
-iterate_shared, [
- #include <linux/fs.h>
-],[
- ((struct file_operations *)0)->iterate_shared(NULL, NULL);
- dir_relax_shared(NULL);
-],[
- AC_DEFINE(HAVE_ITERATE_SHARED, 1,
- ['iterate_shared' is available])
-])
-]) # LC_FOPS_ITERATE_SHARED
-
-#
# LC_HAVE_POSIX_ACL_VALID_USER_NS
#
# 4.8 posix_acl_valid takes struct user_namespace
]) # LC_UAPI_LINUX_MOUNT_H
#
+# LC_HAVE_SUNRPC_CACHE_HASH_LOCK_IS_A_SPINLOCK
+#
+# kernel 4.20 commit 1863d77f15da0addcd293a1719fa5d3ef8cde3ca
+# SUNRPC: Replace the cache_detail->hash_lock with a regular spinlock
+#
+# Now that the reader functions are all RCU protected, use a regular
+# spinlock rather than a reader/writer lock.
+#
+AC_DEFUN([LC_HAVE_SUNRPC_CACHE_HASH_LOCK_IS_A_SPINLOCK], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if cache_detail->hash_lock is a spinlock],
+hash_lock_isa_spinlock_t, [
+ #include <linux/sunrpc/cache.h>
+],[
+ spinlock_t *lock = &(((struct cache_detail *)0)->hash_lock);
+ spin_lock(lock);
+],[
+ AC_DEFINE(HAVE_CACHE_HASH_SPINLOCK, 1,
+ [if cache_detail->hash_lock is a spinlock])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_HAVE_SUNRPC_CACHE_HASH_LOCK_IS_A_SPINLOCK
+
+#
# LC_BIO_INTEGRITY_ENABLED
#
# 4.13 removed bio_integrity_enabled
inode_timespec64, [
#include <linux/fs.h>
],[
- struct inode inode = {};
+ struct inode *inode = NULL;
struct timespec64 ts = {};
- inode.i_atime = timespec64_trunc(ts, 1);
+ inode->i_atime = timespec64_trunc(ts, 1);
(void)inode;
],[
AC_DEFINE(HAVE_INODE_TIMESPEC64, 1,
]) # LC_HAS_LINUX_SELINUX_ENABLED
#
+# LC_BIO_BI_PHYS_SEGMENTS
+#
+# kernel 5.3-rc1 commit 14ccb66b3f585b2bc21e7256c96090abed5a512c
+# block: remove the bi_phys_segments field in struct bio
+#
+AC_DEFUN([LC_BIO_BI_PHYS_SEGMENTS], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if struct bio has bi_phys_segments member],
+bye_bio_bi_phys_segments, [
+ #include <linux/bio.h>
+],[
+ struct bio *bio = NULL;
+ bio->bi_phys_segments++;
+],[
+ AC_DEFINE(HAVE_BIO_BI_PHYS_SEGMENTS, 1,
+ [struct bio has bi_phys_segments member])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_BIO_BI_PHYS_SEGMENTS
+
+#
+# LC_LM_COMPARE_OWNER_EXISTS
+#
+# kernel 5.3-rc3 commit f85d93385e9fe6886a751f647f6812a89bf6bee3
+# locks: Cleanup lm_compare_owner and lm_owner_key
+# removed lm_compare_owner
+#
+AC_DEFUN([LC_LM_COMPARE_OWNER_EXISTS], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if lock_manager_operations has lm_compare_owner],
+lock_manager_ops_lm_compare_owner, [
+ #include <linux/fs.h>
+],[
+ struct lock_manager_operations lm_ops;
+ lm_ops.lm_compare_owner = NULL;
+],[
+ AC_DEFINE(HAVE_LM_COMPARE_OWNER, 1,
+ [lock_manager_operations has lm_compare_owner])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LC_LM_COMPARE_OWNER_EXISTS
+
+#
# LC_PROG_LINUX
#
# Lustre linux kernel checks
# 4.2
LC_BIO_ENDIO_USES_ONE_ARG
LC_SYMLINK_OPS_USE_NAMEIDATA
+ LC_ACCOUNT_PAGE_DIRTIED_3ARGS
# 4.3
LC_HAVE_INTERVAL_EXP_BLK_INTEGRITY
# 4.6
LC_HAVE_IN_COMPAT_SYSCALL
LC_HAVE_XATTR_HANDLER_INODE_PARAM
+ LC_LOCK_PAGE_MEMCG
# 4.7
LC_D_IN_LOOKUP
LC_DIRECTIO_2ARGS
LC_GENERIC_WRITE_SYNC_2ARGS
- LC_FOPS_ITERATE_SHARED
+ LC_FOP_ITERATE_SHARED
# 4.8
LC_HAVE_POSIX_ACL_VALID_USER_NS
# 4.18
LC_INODE_TIMESPEC64
+ # 4.20
+ LC_HAVE_SUNRPC_CACHE_HASH_LOCK_IS_A_SPINLOCK
+
# 5.0
LC_UAPI_LINUX_MOUNT_H
# 5.1
LC_HAS_LINUX_SELINUX_ENABLED
+ # 5.3
+ LC_BIO_BI_PHYS_SEGMENTS
+ LC_LM_COMPARE_OWNER_EXISTS
+
# kernel patch to extend integrity interface
LC_BIO_INTEGRITY_PREP_FN
LC_STACK_SIZE
LC_QUOTA_CONFIG
])
+ LC_POSIX_ACL_CONFIG
]) # LC_PROG_LINUX
#
OSDADDON=""
], [ln -s $OSDADDON $LUSTRE/$OSDMODNAME], [
AC_MSG_RESULT([$OSDMODNAME])
- OSDADDON="subdir-m += $OSDMODNAME"
+ OSDADDON="obj-m += $OSDMODNAME/"
], [
AC_MSG_RESULT([can't link])
OSDADDON=""
AC_CHECK_HEADERS([netdb.h endian.h])
AC_CHECK_FUNCS([gethostbyname])
-# lustre/utils/llverdev.c
-AS_IF([test "x$enable_dist" = xno], [
- PKG_CHECK_MODULES(blkid, [blkid])
-])
-
# lustre/utils/llverfs.c
AC_CHECK_HEADERS([ext2fs/ext2fs.h])
])
SELINUX=""
-AS_IF([test "x$enable_dist" = xno], [
- PKG_CHECK_MODULES(blkid, [blkid])
-])
AC_CHECK_LIB([selinux], [is_selinux_enabled],
[AC_CHECK_HEADERS([selinux/selinux.h],
AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
[AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
AC_MSG_RESULT([$with_systemdsystemunitdir])
+
+AC_MSG_CHECKING([bash-completion directory])
+AC_ARG_WITH([bash-completion-dir],
+ AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
+ [Install the bash auto-completion script in this directory.]),
+ [],
+ [with_bash_completion_dir=yes])
+AS_IF([test "x$with_bash_completion_dir" = "xyes"], [
+ BASH_COMPLETION_DIR="`pkg-config --variable=completionsdir bash-completion`"
+ AS_IF([test "x$BASH_COMPLETION_DIR" = "x"], [
+ [BASH_COMPLETION_DIR="$datadir/bash-completion/completions"]
+ ])
+], [
+ BASH_COMPLETION_DIR="$with_bash_completion_dir"
+])
+AC_SUBST([BASH_COMPLETION_DIR])
+AC_MSG_RESULT([$BASH_COMPLETION_DIR])
]) # LC_CONFIGURE
#
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(ENABLE_BASH_COMPLETION, test "x$with_bash_completion_dir" != "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)
lustre/include/lustre/Makefile
lustre/include/uapi/linux/lustre/Makefile
lustre/kernel_patches/targets/4.18-rhel8.target
+lustre/kernel_patches/targets/3.10-rhel7.7.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