Whamcloud - gitweb
LU-9558 llite: generic_readlink is no longer exported
[fs/lustre-release.git] / lustre / autoconf / lustre-core.m4
index 97a9b87..77d6a98 100644 (file)
@@ -687,6 +687,26 @@ LB_CHECK_EXPORT([simple_setattr], [fs/libfs.c],
 ]) # LC_EXPORT_SIMPLE_SETATTR
 
 #
+# LC_HAVE_BLK_PLUG
+#
+# 2.6.38 add struct blk_plug
+#
+AC_DEFUN([LC_HAVE_BLK_PLUG], [
+LB_CHECK_COMPILE([if 'struct blk_plug' exists],
+blk_plug, [
+       #include <linux/blkdev.h>
+],[
+       struct blk_plug plug;
+
+       blk_start_plug(&plug);
+       blk_finish_plug(&plug);
+],[
+       AC_DEFINE(HAVE_BLK_PLUG, 1,
+               [blk_plug struct exists])
+])
+]) # LC_HAVE_BLK_PLUG
+
+#
 # LC_IOP_TRUNCATE
 #
 # truncate callback removed since 2.6.39
@@ -1464,6 +1484,21 @@ block_device_ops_release_return_int, [
 ])
 ]) # LC_BLKDEV_RELEASE_RETURN_INT
 
+AC_DEFUN([LC_HAVE_PROJECT_QUOTA], [
+LB_CHECK_COMPILE([if get_projid exists],
+get_projid, [
+       #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_HAVE_SECURITY_DENTRY_INIT_SECURITY
 #
@@ -1713,6 +1748,26 @@ have_bvec_iter, [
 ]) # LC_HAVE_BVEC_ITER
 
 #
+# 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_TRUNCATE_IPAGE_FINAL
 #
 # 3.14 bring truncate_inode_pages_final for evict_inode
@@ -1730,6 +1785,27 @@ truncate_ipages_final, [
 ]) # 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
@@ -2254,6 +2330,162 @@ in_compat_syscall, [
 ]) # LC_HAVE_IN_COMPAT_SYSCALL
 
 #
+# LC_DIRECTIO_2ARGS
+#
+# Kernel version 4.7 commit c8b8e32d700fe943a935e435ae251364d016c497
+# direct-io: eliminate the offset argument to ->direct_IO
+#
+AC_DEFUN([LC_DIRECTIO_2ARGS], [
+LB_CHECK_COMPILE([if '->direct_IO()' taken 2 arguments],
+direct_io_2args, [
+       #include <linux/fs.h>
+],[
+       struct address_space_operations ops;
+       struct iov_iter *iter = NULL;
+       struct kiocb *iocb = NULL;
+       int rc;
+       rc = ops.direct_IO(iocb, iter);
+],[
+       AC_DEFINE(HAVE_DIRECTIO_2ARGS, 1,
+               [direct_IO need 2 arguments])
+])
+]) # 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
+#
+AC_DEFUN([LC_HAVE_POSIX_ACL_VALID_USER_NS], [
+LB_CHECK_COMPILE([if 'posix_acl_valid' takes 'struct user_namespace'],
+posix_acl_valid, [
+       #include <linux/fs.h>
+       #include <linux/posix_acl.h>
+],[
+       posix_acl_valid((struct user_namespace*)NULL, (const struct posix_acl*)NULL);
+],[
+       AC_DEFINE(HAVE_POSIX_ACL_VALID_USER_NS, 1,
+               [posix_acl_valid takes struct user_namespace])
+])
+]) # LC_HAVE_POSIX_ACL_VALID_USER_NS
+
+#
+# LC_D_COMPARE_4ARGS
+#
+# Kernel version 4.8 commit 6fa67e707559303e086303aeecc9e8b91ef497d5
+# get rid of 'parent' argument of ->d_compare()
+#
+AC_DEFUN([LC_D_COMPARE_4ARGS], [
+LB_CHECK_COMPILE([if 'd_compare' taken 4 arguments],
+d_compare_4args, [
+       #include <linux/dcache.h>
+],[
+       ((struct dentry_operations*)0)->d_compare(NULL,0,NULL,NULL);
+],[
+       AC_DEFINE(HAVE_D_COMPARE_4ARGS, 1,
+               [d_compare need 4 arguments])
+])
+]) # 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_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_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_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_PROG_LINUX
 #
 # Lustre linux kernel checks
@@ -2298,6 +2530,7 @@ AC_DEFUN([LC_PROG_LINUX], [
        LC_INODE_I_RCU
        LC_D_COMPARE_7ARGS
        LC_D_DELETE_CONST
+       LC_HAVE_BLK_PLUG
 
        # 2.6.39
        LC_REQUEST_QUEUE_UNPLUG_FN
@@ -2363,6 +2596,7 @@ AC_DEFUN([LC_PROG_LINUX], [
        LC_BLKDEV_RELEASE_RETURN_INT
        LC_HAVE_REMOVE_PROC_SUBTREE
        LC_HAVE_PROC_REMOVE
+       LC_HAVE_PROJECT_QUOTA
        LC_HAVE_SECURITY_DENTRY_INIT_SECURITY
 
        # 3.11
@@ -2385,6 +2619,7 @@ AC_DEFUN([LC_PROG_LINUX], [
        # 3.14
        LC_HAVE_BVEC_ITER
        LC_HAVE_TRUNCATE_IPAGES_FINAL
+       LC_IOPS_RENAME_WITH_FLAGS
 
        # 3.15
        LC_VFS_RENAME_6ARGS
@@ -2429,6 +2664,7 @@ AC_DEFUN([LC_PROG_LINUX], [
        LC_HAVE_LOCKS_LOCK_FILE_WAIT
        LC_HAVE_QC_MAKE_REQUEST_FN
        LC_HAVE_KEY_PAYLOAD_DATA_ARRAY
+       LC_HAVE_BI_CNT
 
        # 4.5
        LC_HAVE_FILE_DENTRY
@@ -2440,6 +2676,22 @@ AC_DEFUN([LC_PROG_LINUX], [
        # 4.6
        LC_HAVE_IN_COMPAT_SYSCALL
 
+       # 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
+
+       # 4.9
+       LC_GROUP_INFO_GID
+
+       # 4.10
+       LC_IOP_GENERIC_READLINK
+
        #
        AS_IF([test "x$enable_server" != xno], [
                LC_FUNC_DEV_SET_RDONLY
@@ -2695,6 +2947,23 @@ AC_MSG_RESULT([$enable_pgstat_track])
 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
 
 #
@@ -2714,6 +2983,7 @@ AM_CONDITIONAL(GSS_KEYRING, test x$enable_gss_keyring = xyes)
 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")
 ]) # LC_CONDITIONALS
 
 #
@@ -2731,7 +3001,9 @@ lustre/contrib/Makefile
 lustre/doc/Makefile
 lustre/include/Makefile
 lustre/include/lustre/Makefile
+lustre/include/uapi/linux/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
@@ -2742,6 +3014,7 @@ 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/2.6-fc11.target
 lustre/kernel_patches/targets/2.6-fc12.target
 lustre/kernel_patches/targets/2.6-fc15.target
@@ -2792,6 +3065,7 @@ lustre/ptlrpc/gss/autoMakefile
 lustre/quota/Makefile
 lustre/quota/autoMakefile
 lustre/scripts/Makefile
+lustre/scripts/systemd/Makefile
 lustre/tests/Makefile
 lustre/tests/mpi/Makefile
 lustre/utils/Makefile