X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fautoconf%2Flustre-core.m4;h=3772621c799ee746f7e4c84db901e9ce771404e2;hp=ac3c74bb7043c095439cb1ee9ecbfbb5b3fe2099;hb=a259082d66ba482aa4044abd1b41ac4219585473;hpb=d410aeef76f79e0fc7b09227f850a4ebd462ad3f diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index ac3c74b..3772621 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -20,7 +20,7 @@ LUSTRE="$PWD/lustre" AC_SUBST(LUSTRE) # mount.lustre -rootsbindir='$(CROSS_PATH)/sbin' +rootsbindir='/sbin' AC_SUBST(rootsbindir) demodir='$(docdir)/demo' @@ -89,10 +89,10 @@ LB_CHECK_EXPORT([dev_set_rdonly], [block/ll_rw_block.c block/blk-core.c], # # LC_STACK_SIZE # -# Ensure stack size big than 8k in Lustre server (all kernels) +# Ensure the stack size is at least 8k in Lustre server (all kernels) # AC_DEFUN([LC_STACK_SIZE], [ -LB_CHECK_COMPILE([if stack size big than 8k], +LB_CHECK_COMPILE([if stack size is at least 8k], stack_size_8k, [ #include ], [ @@ -215,20 +215,6 @@ LB_CHECK_EXPORT([delete_from_page_cache], [mm/filemap.c], ]) # LC_EXPORT_TRUNCATE_COMPLETE_PAGE # -# LC_CONFIG_RMTCLIENT -# -dnl FIXME -dnl the AES symbol usually tied with arch, e.g. CRYPTO_AES_586 -dnl FIXME -AC_DEFUN([LC_CONFIG_RMTCLIENT], [ -LB_CHECK_CONFIG_IM([CRYPTO_AES], [], - [AC_MSG_WARN([ - -Lustre remote client require that CONFIG_CRYPTO_AES is enabled in your kernel. -])]) -]) # LC_CONFIG_RMTCLIENT - -# # LC_CONFIG_GSS_KEYRING # # default 'auto', tests for dependencies, if found, enables; @@ -244,17 +230,11 @@ AC_MSG_RESULT([$enable_gss_keyring]) AS_IF([test "x$enable_gss_keyring" != xno], [ LB_CHECK_CONFIG_IM([KEYS], [], [ gss_keyring_conf_test="fail" - AC_MSG_WARN([ - -GSS keyring backend require that CONFIG_KEYS be enabled in your kernel. -])]) + AC_MSG_WARN([GSS keyring backend requires that CONFIG_KEYS be enabled in your kernel.])]) AC_CHECK_LIB([keyutils], [keyctl_search], [], [ gss_keyring_conf_test="fail" - AC_MSG_WARN([ - -libkeyutils is not found, which is required by gss keyring backend -])]) + AC_MSG_WARN([GSS keyring backend requires libkeyutils])]) AS_IF([test "x$gss_keyring_conf_test" != xfail], [ AC_DEFINE([HAVE_GSS_KEYRING], [1], @@ -262,15 +242,7 @@ libkeyutils is not found, which is required by gss keyring backend enable_gss_keyring="yes" ], [ AS_IF([test "x$enable_gss_keyring" = xyes], [ - AC_MSG_ERROR([ - -Cannot enable gss_keyring. See above for details. -]) - ], [ - AC_MSG_WARN([ - -Cannot enable gss keyring. See above for details. -]) + AC_MSG_ERROR([Cannot enable gss_keyring. See above for details.]) ]) ]) ]) @@ -330,9 +302,9 @@ kernel SUNRPC support is required by using GSS. # parts are depend on linux platform. # AC_DEFUN([LC_CONFIG_GSS], [ -AC_MSG_CHECKING([whether to enable gss/krb5 support]) +AC_MSG_CHECKING([whether to enable gss support]) AC_ARG_ENABLE([gss], - [AC_HELP_STRING([--enable-gss], [enable gss/krb5 support])], + [AC_HELP_STRING([--enable-gss], [enable gss support])], [], [enable_gss="auto"]) AC_MSG_RESULT([$enable_gss]) @@ -360,7 +332,6 @@ AS_IF([test "x$enable_gss" != xno], [ AS_IF([test -n "$KRBDIR"], [ gss_conf_test="success" ], [ - AC_MSG_WARN([not found!]) gss_conf_test="failure" ]) @@ -373,7 +344,25 @@ AS_IF([test "x$enable_gss" != xno], [ ]) ]) # LC_CONFIG_GSS +# LC_HAVE_VOID_OPENSSL_HMAC_FUNCS # +# OpenSSL 1.0+ return int for HMAC functions but previous versions do not +AC_DEFUN([LC_HAVE_VOID_OPENSSL_HMAC_FUNCS], [ +AC_COMPILE_IFELSE([AC_LANG_SOURCE([ + #include + #include + + int main(void) { + int rc; + HMAC_CTX ctx; + HMAC_CTX_init(&ctx); + rc = HMAC_Init_ex(&ctx, "test", 4, EVP_md_null(), NULL); + } +])],[],[AC_DEFINE(HAVE_VOID_OPENSSL_HMAC_FUNCS, 1, + [OpenSSL HMAC functions return void instead of int]) +]) +]) # LC_HAVE_VOID_OPENSSL_HMAC_FUNCS + # LC_INODE_PERMISION_2ARGS # # up to v2.6.27 had a 3 arg version (inode, mask, nameidata) @@ -636,7 +625,7 @@ EXTRA_KCFLAGS="$tmp_flags" # # LC_DCACHE_LOCK # -# 2.6.38 dcache_lock removed. rcu-walk commited. +# 2.6.38 dcache_lock removed. rcu-walk committed. # AC_DEFUN([LC_DCACHE_LOCK], [ LB_CHECK_COMPILE([if 'dcache_lock' is exist], @@ -1260,6 +1249,23 @@ inode_ops_atomic_open, [ ]) # LC_HAVE_IOP_ATOMIC_OPEN # +# LC_HAVE_SB_START_WRITE +# +# RHEL6 2.6.32, 3.6 or newer support wrapped FS freeze functions +# +AC_DEFUN([LC_HAVE_SB_START_WRITE], [ +LB_CHECK_COMPILE([if kernel supports wrapped FS freeze functions], +sb_start_write, [ + #include +],[ + sb_start_write(NULL); +],[ + AC_DEFINE(HAVE_SB_START_WRITE, 1, + [kernel supports wrapped FS freeze functions]) +]) +]) # LC_HAVE_SB_START_WRITE + +# # LC_HAVE_POSIXACL_USER_NS # # 3.7 posix_acl_{to,from}_xattr take struct user_namespace @@ -1295,6 +1301,23 @@ file_f_inode, [ ]) # LC_HAVE_FILE_F_INODE # +# LC_HAVE_FILE_INODE +# +# 3.8 has introduced inline function file_inode +# +AC_DEFUN([LC_HAVE_FILE_INODE], [ +LB_CHECK_COMPILE([if file_inode() exists], +file_inode, [ + #include +],[ + file_inode(NULL); +],[ + AC_DEFINE(HAVE_FILE_INODE, 1, + [file_inode() has been defined]) +]) +]) # LC_HAVE_FILE_INODE + +# # LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS # AC_DEFUN([LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS], [ @@ -1354,6 +1377,22 @@ bio_end_sector, [ ]) # LC_HAVE_BIO_END_SECTOR # +# 3.9 created is_sxid +# +AC_DEFUN([LC_HAVE_IS_SXID], [ +LB_CHECK_COMPILE([if 'is_sxid' is defined], +is_sxid, [ + #include +],[ + struct inode inode; + + is_sxid(inode.i_mode); +],[ + AC_DEFINE(HAVE_IS_SXID, 1, [is_sxid is defined]) +]) +]) # LC_HAVE_IS_SXID + +# # LC_HAVE_REMOVE_PROC_SUBTREE # # 3.10 introduced remove_proc_subtree @@ -1408,6 +1447,23 @@ block_device_ops_release_return_int, [ ]) # LC_BLKDEV_RELEASE_RETURN_INT # +# LC_HAVE_SECURITY_DENTRY_INIT_SECURITY +# +# 3.10 introduced security_dentry_init_security() +# +AC_DEFUN([LC_HAVE_SECURITY_DENTRY_INIT_SECURITY], [ +LB_CHECK_COMPILE([if 'security_dentry_init_security' is defined], +security_dentry_init_security, [ + #include +],[ + security_dentry_init_security(NULL, 0, NULL, NULL, NULL); +],[ + AC_DEFINE(HAVE_SECURITY_DENTRY_INIT_SECURITY, 1, + [security_dentry_init_security' is defined]) +]) +]) # LC_HAVE_SECURITY_DENTRY_INIT_SECURITY + +# # LC_INVALIDATE_RANGE # # 3.11 invalidatepage requires the length of the range to invalidate @@ -1702,6 +1758,29 @@ EXTRA_KCFLAGS="$tmp_flags" ]) # LC_HAVE_IOV_ITER_INIT_DIRECTION # +# LC_HAVE_IOV_ITER_TRUNCATE +# +# +# 3.16 introduces a new API iov_iter_truncate() +# +AC_DEFUN([LC_HAVE_IOV_ITER_TRUNCATE], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if 'iov_iter_truncate' exists ], +iter_truncate, [ + #include + #include +],[ + struct iov_iter *i = NULL; + + iov_iter_truncate(i, 0); +],[ + AC_DEFINE(HAVE_IOV_ITER_TRUNCATE, 1, [iov_iter_truncate exists]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_HAVE_IOV_ITER_TRUNCATE + +# # LC_HAVE_FILE_OPERATIONS_READ_WRITE_ITER # # 3.16 introduces [read|write]_iter to struct file_operations @@ -1768,6 +1847,25 @@ EXTRA_KCFLAGS="$tmp_flags" ]) # LC_NFS_FILLDIR_USE_CTX # +# LC_PERCPU_COUNTER_INIT +# +# 3.18 For kernels 3.18 and after percpu_counter_init starts +# to pass a GFP_* memory allocation flag for internal +# memory allocation purposes. +# +AC_DEFUN([LC_PERCPU_COUNTER_INIT], [ +LB_CHECK_COMPILE([if percpu_counter_init uses GFP_* flag as argument], +percpu_counter_init, [ + #include +],[ + percpu_counter_init(NULL, 0, GFP_KERNEL); +],[ + AC_DEFINE(HAVE_PERCPU_COUNTER_INIT_GFP_FLAG, 1, + [percpu_counter_init uses GFP_* flag]) +]) +]) # LC_PERCPU_COUNTER_INIT + +# # LC_KIOCB_HAS_NBYTES # # 3.19 kernel removed ki_nbytes from struct kiocb @@ -1786,6 +1884,30 @@ ki_nbytes, [ ]) # LC_KIOCB_HAS_NBYTES # +# LC_HAVE_DQUOT_QC_DQBLK +# +# 3.19 has quotactl_ops->[sg]et_dqblk that take struct kqid and qc_dqblk +# Added in commit 14bf61ffe +# +AC_DEFUN([LC_HAVE_DQUOT_QC_DQBLK], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if 'quotactl_ops.set_dqblk' takes struct qc_dqblk], +qc_dqblk, [ + #include + #include +],[ + ((struct quotactl_ops *)0)->set_dqblk(NULL, *((struct kqid*)0), (struct qc_dqblk*)0); +],[ + AC_DEFINE(HAVE_DQUOT_QC_DQBLK, 1, + [quotactl_ops.set_dqblk takes struct qc_dqblk]) + AC_DEFINE(HAVE_DQUOT_KQID, 1, + [quotactl_ops.set_dqblk takes struct kqid]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_HAVE_DQUOT_QC_DQBLK + +# # LC_BACKING_DEV_INFO_REMOVAL # # 3.20 kernel removed backing_dev_info from address_space @@ -1929,6 +2051,173 @@ bio_endio, [ ]) # LC_BIO_ENDIO_USES_ONE_ARG # +# LC_HAVE_LOOP_CTL_GET_FREE +# +# 4.x kernel have moved userspace APIs to +# the separate directory and all of them +# support LOOP_CTL_GET_FREE +# +AC_DEFUN([LC_HAVE_LOOP_CTL_GET_FREE], [ +LB_CHECK_FILE([$LINUX/include/linux/loop.h], [ + LB_CHECK_COMPILE([if have 'HAVE_LOOP_CTL_GET_FREE'], + LOOP_CTL_GET_FREE, [ + #include + ],[ + int i; + + i = LOOP_CTL_GET_FREE; + ],[ + AC_DEFINE(HAVE_LOOP_CTL_GET_FREE, 1, + [LOOP_CTL_GET_FREE exist]) + ]) +],[ + AC_DEFINE(HAVE_LOOP_CTL_GET_FREE, 1, + [kernel has LOOP_CTL_GET_FREE]) +]) +]) # LC_HAVE_LOOP_CTL_GET_FREE + +# +# LC_HAVE_CACHE_HEAD_HLIST +# +# 4.3 kernel swiched to hlist for cache_head +# +AC_DEFUN([LC_HAVE_CACHE_HEAD_HLIST], [ +LB_CHECK_COMPILE([if 'struct cache_head' has 'cache_list' field], +cache_head_has_hlist, [ + #include +],[ + do {} while(sizeof(((struct cache_head *)0)->cache_list)); +],[ + AC_DEFINE(HAVE_CACHE_HEAD_HLIST, 1, + [cache_head has hlist cache_list]) +]) +]) # LC_HAVE_CACHE_HEAD_HLIST + +# +# LC_HAVE_LOCKS_LOCK_FILE_WAIT +# +# 4.4 kernel have moved locks API users to +# locks_lock_inode_wait() +# +AC_DEFUN([LC_HAVE_LOCKS_LOCK_FILE_WAIT], [ +LB_CHECK_COMPILE([if 'locks_lock_file_wait' exists], +locks_lock_file_wait, [ + #include +],[ + locks_lock_file_wait(NULL, NULL); +],[ + AC_DEFINE(HAVE_LOCKS_LOCK_FILE_WAIT, 1, + [kernel has locks_lock_file_wait]) +]) +]) # LC_HAVE_LOCKS_LOCK_FILE_WAIT + +# +# LC_HAVE_QC_MAKE_REQUEST_FN +# +# 4.4 request_queue.make_request_fn defined as function returns with blk_qc_t +# see kernel commit dece16353ef47d8d33f5302bc158072a9d65e26f +# +AC_DEFUN([LC_HAVE_QC_MAKE_REQUEST_FN], [ +LB_CHECK_COMPILE([if 'request_queue.make_request_fn' returns blk_qc_t], +make_request_fn_blk_qc_t, [ + #include +],[ + blk_qc_t ret; + make_request_fn *mrf; + ret = mrf(NULL, NULL); +],[ + AC_DEFINE(HAVE_QC_MAKE_REQUEST_FN, 1, + [request_queue.make_request_fn returns blk_qc_t]) +]) +]) # LC_HAVE_QC_MAKE_REQUEST_FN + +# +# LC_HAVE_KEY_PAYLOAD_DATA_ARRAY +# +# 4.4 kernel merged type-specific data with the payload data for keys +# +AC_DEFUN([LC_HAVE_KEY_PAYLOAD_DATA_ARRAY], [ +LB_CHECK_COMPILE([if 'struct key' has 'payload.data' as an array], +key_payload_data_array, [ + #include +],[ + ((struct key *)0)->payload.data[0] = NULL; +],[ + AC_DEFINE(HAVE_KEY_PAYLOAD_DATA_ARRAY, 1, [payload.data is an array]) +]) +]) #LC_HAVE_KEY_PAYLOAD_DATA_ARRAY + +# +# LC_HAVE_FILE_DENTRY +# +# 4.5 adds wrapper file_dentry +# +AC_DEFUN([LC_HAVE_FILE_DENTRY], [ +LB_CHECK_COMPILE([if Linux kernel has 'file_dentry'], +file_dentry, [ + #include +],[ + file_dentry(NULL); +], [ + AC_DEFINE(HAVE_FILE_DENTRY, 1, + [kernel has file_dentry]) +]) +]) # LC_HAVE_FILE_DENTRY + +# +# LC_HAVE_INODE_LOCK +# +# 4.5 introduced inode_lock +# +AC_DEFUN([LC_HAVE_INODE_LOCK], [ +LB_CHECK_COMPILE([if 'inode_lock' is defined], +inode_lock, [ + #include +],[ + inode_lock(NULL); +], [ + AC_DEFINE(HAVE_INODE_LOCK, 1, + [inode_lock is defined]) +]) +]) # LC_HAVE_INODE_LOCK + +# +# LC_HAVE_IOP_GET_LINK +# +# 4.5 vfs replaced iop->follow_link with +# iop->get_link +# +AC_DEFUN([LC_HAVE_IOP_GET_LINK], [ +LB_CHECK_COMPILE([if 'iop' has 'get_link'], +inode_ops_get_link, [ + #include +],[ + struct inode_operations iop; + iop.get_link = NULL; +],[ + AC_DEFINE(HAVE_IOP_GET_LINK, 1, + [have iop get_link]) +]) +]) # LC_HAVE_IOP_GET_LINK + +# +# LC_HAVE_IN_COMPAT_SYSCALL +# +# 4.6 renamed is_compat_task to in_compat_syscall +# +AC_DEFUN([LC_HAVE_IN_COMPAT_SYSCALL], [ +LB_CHECK_COMPILE([if 'in_compat_syscall' is defined], +in_compat_syscall, [ + #include +],[ + in_compat_syscall(); +],[ + AC_DEFINE(HAVE_IN_COMPAT_SYSCALL, 1, + [have in_compat_syscall]) +]) +]) # LC_HAVE_IN_COMPAT_SYSCALL + +# # LC_PROG_LINUX # # Lustre linux kernel checks @@ -1944,8 +2233,8 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_LLITE_LLOOP_MODULE LC_GLIBC_SUPPORT_FHANDLES - LC_CONFIG_RMTCLIENT LC_CONFIG_GSS + LC_HAVE_VOID_OPENSSL_HMAC_FUNCS # 2.6.32 LC_BLK_QUEUE_MAX_SEGMENTS @@ -1993,6 +2282,7 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_FILE_LLSEEK_SIZE LC_INODE_PERMISION_2ARGS LC_RADIX_EXCEPTION_ENTRY + LC_HAVE_LOOP_CTL_GET_FREE # 3.2 LC_HAVE_VOID_MAKE_REQUEST_FN @@ -2018,22 +2308,26 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_DATA_FOR_LLITE_IS_LIST LC_DENTRY_OPEN_USE_PATH LC_HAVE_IOP_ATOMIC_OPEN + LC_HAVE_SB_START_WRITE # 3.7 LC_HAVE_POSIXACL_USER_NS # 3.8 LC_HAVE_FILE_F_INODE + LC_HAVE_FILE_INODE LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS # 3.9 LC_HAVE_HLIST_FOR_EACH_3ARG LC_HAVE_BIO_END_SECTOR + LC_HAVE_IS_SXID # 3.10 LC_BLKDEV_RELEASE_RETURN_INT LC_HAVE_REMOVE_PROC_SUBTREE LC_HAVE_PROC_REMOVE + LC_HAVE_SECURITY_DENTRY_INIT_SECURITY # 3.11 LC_INVALIDATE_RANGE @@ -2061,16 +2355,19 @@ AC_DEFUN([LC_PROG_LINUX], [ # 3.16 LC_DIRECTIO_USE_ITER LC_HAVE_IOV_ITER_INIT_DIRECTION + LC_HAVE_IOV_ITER_TRUNCATE LC_HAVE_FILE_OPERATIONS_READ_WRITE_ITER # 3.17 LC_KEY_MATCH_DATA # 3.18 + LC_PERCPU_COUNTER_INIT LC_NFS_FILLDIR_USE_CTX # 3.19 LC_KIOCB_HAS_NBYTES + LC_HAVE_DQUOT_QC_DQBLK # 3.20 LC_BACKING_DEV_INFO_REMOVAL @@ -2088,6 +2385,24 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_BIO_ENDIO_USES_ONE_ARG LC_SYMLINK_OPS_USE_NAMEIDATA + # 4.3 + LC_HAVE_CACHE_HEAD_HLIST + + # 4.4 + LC_HAVE_LOCKS_LOCK_FILE_WAIT + LC_HAVE_QC_MAKE_REQUEST_FN + LC_HAVE_KEY_PAYLOAD_DATA_ARRAY + + # 4.5 + LC_HAVE_FILE_DENTRY + + # 4.5 + LC_HAVE_INODE_LOCK + LC_HAVE_IOP_GET_LINK + + # 4.6 + LC_HAVE_IN_COMPAT_SYSCALL + # AS_IF([test "x$enable_server" != xno], [ LC_FUNC_DEV_SET_RDONLY @@ -2397,9 +2712,9 @@ lustre/conf/Makefile lustre/contrib/Makefile lustre/doc/Makefile lustre/include/Makefile -lustre/include/lustre_ver.h lustre/include/lustre/Makefile lustre/kernel_patches/targets/3.10-rhel7.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 @@ -2407,6 +2722,7 @@ lustre/kernel_patches/targets/2.6-rhel5.target lustre/kernel_patches/targets/2.6-sles11.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/2.6-fc11.target lustre/kernel_patches/targets/2.6-fc12.target