X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fautoconf%2Flustre-core.m4;h=97f1a2d473a12c4567152cbf2986a5b28d7e55c5;hp=e42acbf5c62629623e7223df7c943ec9df6a0053;hb=ab8b977f77e44c3f4d57be2244e9df898fd15316;hpb=01def2b635ff0b7bacde158d9124334c42cd5d2b diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index e42acbf..97f1a2d 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -215,18 +215,6 @@ LB_CHECK_EXPORT([delete_from_page_cache], [mm/filemap.c], ]) # LC_EXPORT_TRUNCATE_COMPLETE_PAGE # -# LC_CAPA_CRYPTO -# -AC_DEFUN([LC_CAPA_CRYPTO], [ -LB_CHECK_CONFIG_IM([CRYPTO], [], - [AC_MSG_ERROR([Lustre capability require that CONFIG_CRYPTO is enabled in your kernel.])]) -LB_CHECK_CONFIG_IM([CRYPTO_HMAC], [], - [AC_MSG_ERROR([Lustre capability require that CONFIG_CRYPTO_HMAC is enabled in your kernel.])]) -LB_CHECK_CONFIG_IM([CRYPTO_SHA1], [], - [AC_MSG_ERROR([Lustre capability require that CONFIG_CRYPTO_SHA1 is enabled in your kernel.])]) -]) # LC_CAPA_CRYPTO - -# # LC_CONFIG_RMTCLIENT # dnl FIXME @@ -289,6 +277,40 @@ Cannot enable gss keyring. See above for details. ]) # LC_CONFIG_GSS_KEYRING # +# LC_HAVE_CRED_TGCRED +# +# rhel7 struct cred has no member tgcred +# +AC_DEFUN([LC_HAVE_CRED_TGCRED], [ +LB_CHECK_COMPILE([if 'struct cred' has member 'tgcred'], +cred_tgcred, [ + #include +],[ + ((struct cred *)0)->tgcred = NULL; +],[ + AC_DEFINE(HAVE_CRED_TGCRED, 1, + [struct cred has member tgcred]) +]) +]) # LC_HAVE_CRED_TGCRED + +# +# LC_KEY_TYPE_INSTANTIATE_2ARGS +# +# rhel7 key_type->instantiate takes 2 args (struct key, struct key_preparsed_payload) +# +AC_DEFUN([LC_KEY_TYPE_INSTANTIATE_2ARGS], [ +LB_CHECK_COMPILE([if 'key_type->instantiate' has two args], +key_type_instantiate_2args, [ + #include +],[ + ((struct key_type *)0)->instantiate(0, NULL); +],[ + AC_DEFINE(HAVE_KEY_TYPE_INSTANTIATE_2ARGS, 1, + [key_type->instantiate has two args]) +]) +]) # LC_KEY_TYPE_INSTANTIATE_2ARGS + +# # LC_CONFIG_SUNRPC # AC_DEFUN([LC_CONFIG_SUNRPC], [ @@ -316,6 +338,8 @@ AC_MSG_RESULT([$enable_gss]) AS_IF([test "x$enable_gss" != xno], [ LC_CONFIG_GSS_KEYRING + LC_HAVE_CRED_TGCRED + LC_KEY_TYPE_INSTANTIATE_2ARGS sunrpc_required=$enable_gss LC_CONFIG_SUNRPC sunrpc_required="no" @@ -334,33 +358,17 @@ AS_IF([test "x$enable_gss" != xno], [ require_krb5="no" AS_IF([test -n "$KRBDIR"], [ - AC_CHECK_LIB([gssapi], [gss_export_lucid_sec_context], [ - GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssapi" - gss_conf_test="success" - ], [ - AC_CHECK_LIB([gssglue], [gss_export_lucid_sec_context], [ - GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssglue" - gss_conf_test="success" - ], [ - AS_IF([test "x$enable_gss" = xyes], [ - AC_MSG_ERROR([ - -libgssapi or libgssglue is not found, which is required by GSS. -]) - ], [ - AC_MSG_WARN([ - -libgssapi or libgssglue is not found, which is required by GSS. -]) - ]) - ]) - ]) - AC_SUBST(GSSAPI_LIBS) + gss_conf_test="success" + ], [ + AC_MSG_WARN([not found!]) + gss_conf_test="failure" ]) AS_IF([test "x$gss_conf_test" = xsuccess], [ AC_DEFINE([HAVE_GSS], [1], [Define this is if you enable gss]) enable_gss="yes" + ], [ + enable_gss="no" ]) ]) ]) # LC_CONFIG_GSS @@ -487,6 +495,25 @@ EXTRA_KCFLAGS=$tmp_flags ]) # LC_QUOTA64 # +# LC_HAVE_ADD_WAIT_QUEUE_EXCLUSIVE +# +# 2.6.34 adds __add_wait_queue_exclusive +# +AC_DEFUN([LC_HAVE_ADD_WAIT_QUEUE_EXCLUSIVE], [ +LB_CHECK_COMPILE([if '__add_wait_queue_exclusive' exists], +__add_wait_queue_exclusive, [ + #include +],[ + wait_queue_head_t queue; + wait_queue_t wait; + __add_wait_queue_exclusive(&queue, &wait); +],[ + AC_DEFINE(HAVE___ADD_WAIT_QUEUE_EXCLUSIVE, 1, + [__add_wait_queue_exclusive exists]) +]) +]) # LC_HAVE_ADD_WAIT_QUEUE_EXCLUSIVE + +# # LC_FS_STRUCT_RWLOCK # # 2.6.36 fs_struct.lock use spinlock instead of rwlock. @@ -819,20 +846,19 @@ lock_manager_ops_lm_xxx, [ # # LC_INODE_DIO_WAIT # -# 3.1 kills inode->i_alloc_sem, use i_dio_count and inode_dio_wait/ -# inode_dio_done instead. +# 3.1 kills inode->i_alloc_sem, use i_dio_count and inode_dio_wait +# instead. # see kernel commit bd5fe6c5eb9c548d7f07fe8f89a150bb6705e8e3 # AC_DEFUN([LC_INODE_DIO_WAIT], [ -LB_CHECK_COMPILE([if 'inode->i_alloc_sem' is killed and use inode_dio_wait/done], +LB_CHECK_COMPILE([if 'inode->i_alloc_sem' is killed and use inode_dio_wait], inode_dio_wait, [ #include ],[ inode_dio_wait((struct inode *)0); - inode_dio_done((struct inode *)0); ],[ AC_DEFINE(HAVE_INODE_DIO_WAIT, 1, - [inode->i_alloc_sem is killed and use inode_dio_wait/done]) + [inode->i_alloc_sem is killed and use inode_dio_wait]) ]) ]) # LC_INODE_DIO_WAIT @@ -923,6 +949,33 @@ inode_i_nlink_protected, [ ]) # LC_HAVE_PROTECT_I_NLINK # +# 2.6.39 security_inode_init_security takes a 'struct qstr' parameter +# +# 3.2 security_inode_init_security takes a callback to set xattrs +# +AC_DEFUN([LC_HAVE_SECURITY_IINITSEC], [ +LB_CHECK_COMPILE([if security_inode_init_security takes a callback], +security_inode_init_security_callback, [ + #include +],[ + security_inode_init_security(NULL, NULL, NULL, (const initxattrs)NULL, NULL); +],[ + AC_DEFINE(HAVE_SECURITY_IINITSEC_CALLBACK, 1, + [security_inode_init_security takes a callback to set xattrs]) +],[ + LB_CHECK_COMPILE([if security_inode_init_security takes a 'struct qstr' parameter], + security_inode_init_security_qstr, [ + #include + ],[ + security_inode_init_security(NULL, NULL, (struct qstr *)NULL, NULL, NULL, NULL); + ],[ + AC_DEFINE(HAVE_SECURITY_IINITSEC_QSTR, 1, + [security_inode_init_security takes a 'struct qstr' parameter]) + ]) +]) +]) # LC_HAVE_SECURITY_IINITSEC + +# # LC_HAVE_MIGRATE_HEADER # # 3.3 introduces migrate_mode.h and migratepage has 4 args @@ -1135,30 +1188,35 @@ generic_file_llseek_size_5args, [ ]) # LC_FILE_LLSEEK_SIZE_5ARG # -# LC_HAVE_DENTRY_D_ALIAS_HLIST +# LC_LLITE_DATA_IS_LIST # # 3.6 switch i_dentry/d_alias from list to hlist # -AC_DEFUN([LC_HAVE_DENTRY_D_ALIAS_HLIST], [ +# In the upstream kernels d_alias first changes +# to a hlist and then in later version, 3.11, gets +# moved to the union d_u. Due to some distros having +# d_alias in the d_u union as a struct list, which +# has never existed upstream stream, we can't test +# if d_alias is a list or hlist directly. If ever +# i_dentry and d_alias even up different combos then +# the build will fail. In that case then we will need +# to separate out the i_dentry and d_alias test below. +# +AC_DEFUN([LC_DATA_FOR_LLITE_IS_LIST], [ tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" -LB_CHECK_COMPILE([if 'i_dentry/d_alias' uses 'hlist'], -i_dentry_d_alias_hlist, [ +LB_CHECK_COMPILE([if 'i_dentry/d_alias' uses 'list'], +i_dentry_d_alias_list, [ #include - #include ],[ struct inode inode; - struct dentry dentry; - struct hlist_head head; - struct hlist_node node; - inode.i_dentry = head; - dentry.d_alias = node; + INIT_LIST_HEAD(&inode.i_dentry); ],[ - AC_DEFINE(HAVE_DENTRY_D_ALIAS_HLIST, 1, - [have i_dentry/d_alias uses hlist]) + AC_DEFINE(DATA_FOR_LLITE_IS_LIST, 1, + [both i_dentry/d_alias uses list]) ]) EXTRA_KCFLAGS="$tmp_flags" -]) # LC_HAVE_DENTRY_D_ALIAS_HLIST +]) # LC_DATA_FOR_LLITE_IS_LIST # # LC_DENTRY_OPEN_USE_PATH @@ -1225,14 +1283,14 @@ posix_acl_to_xattr_user_namespace, [ # 3.8 struct file has new member f_inode # AC_DEFUN([LC_HAVE_FILE_F_INODE], [ -LB_CHECK_COMPILE([if 'struct file' has memeber 'f_inode'], +LB_CHECK_COMPILE([if 'struct file' has member 'f_inode'], file_f_inode, [ #include ],[ ((struct file *)0)->f_inode = NULL; ],[ AC_DEFINE(HAVE_FILE_F_INODE, 1, - [struct file has memeber f_inode]) + [struct file has member f_inode]) ]) ]) # LC_HAVE_FILE_F_INODE @@ -1263,9 +1321,10 @@ hlist_for_each_entry_3args, [ #include #include ],[ + struct hlist_head *head = NULL; struct inode *inode; - struct dentry *dentry; - hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) { + + hlist_for_each_entry(inode, head, i_hash) { continue; } ],[ @@ -1275,21 +1334,58 @@ hlist_for_each_entry_3args, [ ]) # LC_HAVE_HLIST_FOR_EACH_3ARG # -# LC_HAVE_ONLY_PROCFS_SEQ +# LC_HAVE_BIO_END_SECTOR +# +# 3.9 introduces bio_end_sector macro +# f73a1c7d117d07a96d89475066188a2b79e53c48 +# +AC_DEFUN([LC_HAVE_BIO_END_SECTOR], [ +LB_CHECK_COMPILE([if 'bio_end_sector' is defined], +bio_end_sector, [ + #include +],[ + struct bio bio; + + bio_end_sector(&bio); +],[ + AC_DEFINE(HAVE_BIO_END_SECTOR, 1, + [bio_end_sector is defined]) +]) +]) # LC_HAVE_BIO_END_SECTOR + +# +# LC_HAVE_REMOVE_PROC_SUBTREE # -# 3.10+ only supports procfs seq_files handling +# 3.10 introduced remove_proc_subtree # -AC_DEFUN([LC_HAVE_ONLY_PROCFS_SEQ], [ -LB_CHECK_COMPILE([if procfs only supports using 'seq_files'], -only_procfs_seq_files, [ +AC_DEFUN([LC_HAVE_REMOVE_PROC_SUBTREE], [ +LB_CHECK_COMPILE([if 'remove_proc_subtree' is defined], +remove_proc_subtree, [ #include ],[ - ((struct proc_dir_entry *)0)->write_proc(NULL, NULL, 0, NULL); -], [], [ - AC_DEFINE(HAVE_ONLY_PROCFS_SEQ, 1, - [only seq_files supported]) + remove_proc_subtree(NULL, NULL); +], [ + AC_DEFINE(HAVE_REMOVE_PROC_SUBTREE, 1, + [remove_proc_subtree is defined]) +]) +]) # LC_HAVE_REMOVE_PROC_SUBTREE + +# +# LC_HAVE_PROC_REMOVE +# +# 3.10 introduced proc_remove +# +AC_DEFUN([LC_HAVE_PROC_REMOVE], [ +LB_CHECK_COMPILE([if 'proc_remove' is defined], +proc_remove, [ + #include +],[ + proc_remove(NULL); +], [ + AC_DEFINE(HAVE_PROC_REMOVE, 1, + [proc_remove is defined]) ]) -]) # LC_HAVE_ONLY_PROCFS_SEQ +]) # LC_HAVE_PROC_REMOVE # # LC_BLKDEV_RELEASE_RETURN_INT @@ -1400,6 +1496,61 @@ truncate_pagecache_old_size, [ ]) # LC_OLDSIZE_TRUNCATE_PAGECACHE # +# LC_HAVE_DENTRY_D_U_D_ALIAS +# +# 3.11 kernel moved d_alias to the union d_u in struct dentry +# +# Some distros move d_alias to d_u but it is still a struct list +# +AC_DEFUN([LC_HAVE_DENTRY_D_U_D_ALIAS], [ +AS_IF([test "x$lb_cv_compile_i_dentry_d_alias_list" = xyes], [ + LB_CHECK_COMPILE([if list 'dentry.d_u.d_alias' exist], + d_alias, [ + #include + #include + ],[ + struct dentry de; + INIT_LIST_HEAD(&de.d_u.d_alias); + ],[ + AC_DEFINE(HAVE_DENTRY_D_U_D_ALIAS, 1, + [list dentry.d_u.d_alias exist]) + ]) +],[ + LB_CHECK_COMPILE([if hlist 'dentry.d_u.d_alias' exist], + d_alias, [ + #include + #include + ],[ + struct dentry de; + INIT_HLIST_NODE(&de.d_u.d_alias); + ],[ + AC_DEFINE(HAVE_DENTRY_D_U_D_ALIAS, 1, + [hlist dentry.d_u.d_alias exist]) + ]) +]) +]) # LC_HAVE_DENTRY_D_U_D_ALIAS + +# +# LC_HAVE_DENTRY_D_CHILD +# +# 3.11 kernel d_child has been moved out of the union d_u +# in struct dentry +# +AC_DEFUN([LC_HAVE_DENTRY_D_CHILD], [ +LB_CHECK_COMPILE([if 'dentry.d_child' exist], +d_child, [ + #include + #include +],[ + struct dentry de; + INIT_LIST_HEAD(&de.d_child); +],[ + AC_DEFINE(HAVE_DENTRY_D_CHILD, 1, + [dentry.d_child exist]) +]) +]) # LC_HAVE_DENTRY_D_CHILD + +# # LC_KIOCB_KI_LEFT # # 3.12 ki_left removed from struct kiocb @@ -1470,6 +1621,23 @@ have_bvec_iter, [ ]) # LC_HAVE_BVEC_ITER # +# LC_HAVE_TRUNCATE_IPAGE_FINAL +# +# 3.14 bring truncate_inode_pages_final for evict_inode +# +AC_DEFUN([LC_HAVE_TRUNCATE_IPAGES_FINAL], [ +LB_CHECK_COMPILE([if Linux kernel has truncate_inode_pages_final], +truncate_ipages_final, [ + #include +],[ + truncate_inode_pages_final(NULL); +], [ + AC_DEFINE(HAVE_TRUNCATE_INODE_PAGES_FINAL, 1, + [kernel has truncate_inode_pages_final]) +]) +]) # LC_HAVE_TRUNCATE_IPAGES_FINAL + +# # LC_VFS_RENAME_6ARGS # # 3.15 has vfs_rename with 6 args @@ -1487,6 +1655,263 @@ vfs_rename_6args, [ ]) # LC_VFS_RENAME_6ARGS # +# LC_DIRECTIO_USE_ITER +# +# 3.16 kernel changes direct IO to use iov_iter +# +AC_DEFUN([LC_DIRECTIO_USE_ITER], [ +LB_CHECK_COMPILE([if direct IO uses iov_iter], +direct_io_iter, [ + #include +],[ + struct address_space_operations ops; + struct iov_iter *iter = NULL; + loff_t offset = 0; + + ops.direct_IO(0, NULL, iter, offset); +],[ + AC_DEFINE(HAVE_DIRECTIO_ITER, 1, + [direct IO uses iov_iter]) +]) +]) # LC_DIRECTIO_USE_ITER + +# +# LC_HAVE_IOV_ITER_INIT_DIRECTION +# +# +# 3.16 linux commit 71d8e532b1549a478e6a6a8a44f309d050294d00 +# changed iov_iter_init api to start accepting a tag +# that defines if its a read or write operation +# +AC_DEFUN([LC_HAVE_IOV_ITER_INIT_DIRECTION], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if 'iov_iter_init' takes a tag], +iter_init, [ + #include + #include +],[ + const struct iovec *iov = NULL; + + iov_iter_init(NULL, READ, iov, 1, 0); +],[ + AC_DEFINE(HAVE_IOV_ITER_INIT_DIRECTION, 1, + [iov_iter_init handles directional tag]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_HAVE_IOV_ITER_INIT_DIRECTION + +# +# LC_HAVE_FILE_OPERATIONS_READ_WRITE_ITER +# +# 3.16 introduces [read|write]_iter to struct file_operations +# +AC_DEFUN([LC_HAVE_FILE_OPERATIONS_READ_WRITE_ITER], [ +LB_CHECK_COMPILE([if 'file_operations.[read|write]_iter' exist], +file_function_iter, [ + #include +],[ + ((struct file_operations *)NULL)->read_iter(NULL, NULL); + ((struct file_operations *)NULL)->write_iter(NULL, NULL); +],[ + AC_DEFINE(HAVE_FILE_OPERATIONS_READ_WRITE_ITER, 1, + [file_operations.[read|write]_iter functions exist]) +]) +]) # LC_HAVE_FILE_OPERATIONS_READ_WRITE_ITER + +# +# LC_KEY_MATCH_DATA +# +# 3.17 replaces key_type::match with match_preparse +# and has new struct key_match_data +# +AC_DEFUN([LC_KEY_MATCH_DATA], [ +LB_CHECK_COMPILE([if struct key_match field exist], +key_match, [ + #include +],[ + struct key_match_data data; +],[ + AC_DEFINE(HAVE_KEY_MATCH_DATA, 1, + [struct key_match_data exist]) +]) +]) # LC_KEY_MATCH_DATA + +# +# LC_NFS_FILLDIR_USE_CTX +# +# 3.18 kernel moved from void cookie to struct dir_context +# +AC_DEFUN([LC_NFS_FILLDIR_USE_CTX], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if filldir_t uses struct dir_context], +filldir_ctx, [ + #include +],[ + int filldir(struct dir_context *ctx, const char* name, + int i, loff_t off, u64 tmp, unsigned temp) + { + return 0; + } + + struct dir_context ctx = { + .actor = filldir, + }; + + ctx.actor(NULL, "test", 0, (loff_t) 0, 0, 0); +],[ + AC_DEFINE(HAVE_FILLDIR_USE_CTX, 1, + [filldir_t needs struct dir_context as argument]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LC_NFS_FILLDIR_USE_CTX + +# +# LC_KIOCB_HAS_NBYTES +# +# 3.19 kernel removed ki_nbytes from struct kiocb +# +AC_DEFUN([LC_KIOCB_HAS_NBYTES], [ +LB_CHECK_COMPILE([if struct kiocb has ki_nbytes field], +ki_nbytes, [ + #include +],[ + struct kiocb iocb; + + iocb.ki_nbytes = 0; +],[ + AC_DEFINE(HAVE_KI_NBYTES, 1, [ki_nbytes field exist]) +]) +]) # LC_KIOCB_HAS_NBYTES + +# +# LC_BACKING_DEV_INFO_REMOVAL +# +# 3.20 kernel removed backing_dev_info from address_space +# +AC_DEFUN([LC_BACKING_DEV_INFO_REMOVAL], [ +LB_CHECK_COMPILE([if struct address_space has backing_dev_info], +backing_dev_info, [ + #include +],[ + struct address_space mapping; + + mapping.backing_dev_info = NULL; +],[ + AC_DEFINE(HAVE_BACKING_DEV_INFO, 1, [backing_dev_info exist]) +]) +]) # LC_BACKING_DEV_INFO_REMOVAL + +# +# LC_HAVE_BDI_CAP_MAP_COPY +# +# 3.20 removed mmap handling for backing devices since +# it breaks on non-MMU systems. See kernel commit +# b4caecd48005fbed3949dde6c1cb233142fd69e9 +# +AC_DEFUN([LC_HAVE_BDI_CAP_MAP_COPY], [ +LB_CHECK_COMPILE([if have 'BDI_CAP_MAP_COPY'], +bdi_cap_map_copy, [ + #include +],[ + struct backing_dev_info info; + + info.capabilities = BDI_CAP_MAP_COPY; +],[ + AC_DEFINE(HAVE_BDI_CAP_MAP_COPY, 1, + [BDI_CAP_MAP_COPY exist]) +]) +]) # LC_HAVE_BDI_CAP_MAP_COPY + +# +# LC_CANCEL_DIRTY_PAGE +# +# 4.0.0 kernel removed cancel_dirty_page +# +AC_DEFUN([LC_CANCEL_DIRTY_PAGE], [ +LB_CHECK_COMPILE([if cancel_dirty_page still exist], +cancel_dirty_page, [ + #include +],[ + cancel_dirty_page(NULL, PAGE_SIZE); +],[ + AC_DEFINE(HAVE_CANCEL_DIRTY_PAGE, 1, + [cancel_dirty_page is still available]) +]) +]) # LC_CANCEL_DIRTY_PAGE + +# +# LC_IOV_ITER_RW +# +# 4.1 kernel has iov_iter_rw +# +AC_DEFUN([LC_IOV_ITER_RW], [ +LB_CHECK_COMPILE([if iov_iter_rw exist], +iov_iter_rw, [ + #include + #include +],[ + struct iov_iter *iter = NULL; + + iov_iter_rw(iter); +],[ + AC_DEFINE(HAVE_IOV_ITER_RW, 1, + [iov_iter_rw exist]) +]) +]) # LC_IOV_ITER_RW + +# +# LC_HAVE_SYNC_READ_WRITE +# +# 4.1 new_sync_[read|write] no longer exported +# +AC_DEFUN([LC_HAVE_SYNC_READ_WRITE], [ +LB_CHECK_EXPORT([new_sync_read], [fs/read_write.c], + [AC_DEFINE(HAVE_SYNC_READ_WRITE, 1, + [new_sync_[read|write] is exported by the kernel])]) +]) # LC_HAVE_SYNC_READ_WRITE + +# +# LC_NEW_CANCEL_DIRTY_PAGE +# +# 4.2 kernel has new cancel_dirty_page +# +AC_DEFUN([LC_NEW_CANCEL_DIRTY_PAGE], [ +LB_CHECK_COMPILE([if cancel_dirty_page with one argument exist], +new_cancel_dirty_page, [ + #include +],[ + cancel_dirty_page(NULL); +],[ + AC_DEFINE(HAVE_NEW_CANCEL_DIRTY_PAGE, 1, + [cancel_dirty_page with one arguement is available]) +]) +]) # LC_NEW_CANCEL_DIRTY_PAGE + +# +# LC_SYMLINK_OPS_USE_NAMEIDATA +# +# For the 4.2+ kernels the file system internal symlink api no +# longer uses struct nameidata as a argument +# +AC_DEFUN([LC_SYMLINK_OPS_USE_NAMEIDATA], [ +LB_CHECK_COMPILE([if symlink inode operations have struct nameidata argument], +symlink_use_nameidata, [ + #include + #include +],[ + struct nameidata *nd = NULL; + + ((struct inode_operations *)0)->follow_link(NULL, nd); + ((struct inode_operations *)0)->put_link(NULL, nd, NULL); +],[ + AC_DEFINE(HAVE_SYMLINK_OPS_USE_NAMEIDATA, 1, + [symlink inode operations need struct nameidata argument]) +]) +]) # LC_SYMLINK_OPS_USE_NAMEIDATA + +# # LC_PROG_LINUX # # Lustre linux kernel checks @@ -1502,7 +1927,6 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_LLITE_LLOOP_MODULE LC_GLIBC_SUPPORT_FHANDLES - LC_CAPA_CRYPTO LC_CONFIG_RMTCLIENT LC_CONFIG_GSS @@ -1512,6 +1936,7 @@ AC_DEFUN([LC_PROG_LINUX], [ # 2.6.34 LC_HAVE_DQUOT_FS_DISK_QUOTA LC_HAVE_DQUOT_SUSPEND + LC_HAVE_ADD_WAIT_QUEUE_EXCLUSIVE # 2.6.35, 3.0.0 LC_FILE_FSYNC @@ -1539,6 +1964,7 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_HAVE_FSTYPE_MOUNT LC_IOP_TRUNCATE LC_HAVE_INODE_OWNER_OR_CAPABLE + LC_HAVE_SECURITY_IINITSEC # 3.0 LC_DIRTY_INODE_WITH_FLAG @@ -1572,7 +1998,7 @@ AC_DEFUN([LC_PROG_LINUX], [ LC_FILE_LLSEEK_SIZE_5ARG # 3.6 - LC_HAVE_DENTRY_D_ALIAS_HLIST + LC_DATA_FOR_LLITE_IS_LIST LC_DENTRY_OPEN_USE_PATH LC_HAVE_IOP_ATOMIC_OPEN @@ -1585,16 +2011,20 @@ AC_DEFUN([LC_PROG_LINUX], [ # 3.9 LC_HAVE_HLIST_FOR_EACH_3ARG + LC_HAVE_BIO_END_SECTOR # 3.10 - LC_HAVE_ONLY_PROCFS_SEQ LC_BLKDEV_RELEASE_RETURN_INT + LC_HAVE_REMOVE_PROC_SUBTREE + LC_HAVE_PROC_REMOVE # 3.11 LC_INVALIDATE_RANGE LC_HAVE_DIR_CONTEXT LC_D_COMPARE_5ARGS LC_HAVE_DCOUNT + LC_HAVE_DENTRY_D_U_D_ALIAS + LC_HAVE_DENTRY_D_CHILD # 3.12 LC_OLDSIZE_TRUNCATE_PAGECACHE @@ -1606,10 +2036,40 @@ AC_DEFUN([LC_PROG_LINUX], [ # 3.14 LC_HAVE_BVEC_ITER + LC_HAVE_TRUNCATE_IPAGES_FINAL # 3.15 LC_VFS_RENAME_6ARGS + # 3.16 + LC_DIRECTIO_USE_ITER + LC_HAVE_IOV_ITER_INIT_DIRECTION + LC_HAVE_FILE_OPERATIONS_READ_WRITE_ITER + + # 3.17 + LC_KEY_MATCH_DATA + + # 3.18 + LC_NFS_FILLDIR_USE_CTX + + # 3.19 + LC_KIOCB_HAS_NBYTES + + # 3.20 + LC_BACKING_DEV_INFO_REMOVAL + LC_HAVE_BDI_CAP_MAP_COPY + + # 4.0.0 + LC_CANCEL_DIRTY_PAGE + + # 4.1.0 + LC_IOV_ITER_RW + LC_HAVE_SYNC_READ_WRITE + + # 4.2 + LC_NEW_CANCEL_DIRTY_PAGE + LC_SYMLINK_OPS_USE_NAMEIDATA + # AS_IF([test "x$enable_server" != xno], [ LC_FUNC_DEV_SET_RDONLY @@ -1668,9 +2128,9 @@ AC_ARG_ENABLE([mpitests], MPI_Initialized(&flag); return 0; } - ])], [lb_cv_mpi_tests="yes"], [lb_cv_mpi_tests="no" - enable_mpitests=$lb_cv_mpi_tests]) + ])], [lb_cv_mpi_tests="yes"], [lb_cv_mpi_tests="no"]) ]) + enable_mpitests=$lb_cv_mpi_tests CC=$oldcc fi AC_SUBST(MPICC_WRAPPER) @@ -1708,22 +2168,6 @@ AS_IF([test "x$enable_quota" != xno -a "x$enable_utils" != xno], [ ]) # LC_QUOTA # -# LC_CONFIG_SPLIT -# -# whether to enable split support -# -AC_DEFUN([LC_CONFIG_SPLIT], [ -AC_MSG_CHECKING([whether to enable split support]) -AC_ARG_ENABLE([split], - AC_HELP_STRING([--enable-split], - [enable split support]), - [], [enable_split='no']) -AC_MSG_RESULT([$enable_split]) -AS_IF([test "x$enable_split" != xno], - [AC_DEFINE(HAVE_SPLIT_SUPPORT, 1, [enable split support])]) -]) # LC_CONFIG_SPLIT - -# # LC_CONFIG_NODEMAP_PROC_DEBUG # # enable nodemap proc file debugging @@ -1813,41 +2257,35 @@ AC_MSG_NOTICE([Lustre core checks LC_CONFIG_OBD_BUFFER_SIZE AS_IF([test $target_cpu == "i686" -o $target_cpu == "x86_64"], - [CFLAGS="$CFLAGS -Werror"]) + [CFLAGS="$CFLAGS -Wall -Werror"]) # maximum MDS thread count LC_MDS_MAX_THREADS -# libcfs/include/libcfs/posix/libcfs.h -# lustre/utils/llverdev.c -AC_CHECK_HEADERS([sys/user.h sys/vfs.h stdint.h blkid/blkid.h]) +# lustre/utils/gss/gss_util.c +# lustre/utils/gss/gssd_proc.c +# lustre/utils/gss/krb5_util.c +# lustre/utils/llog_reader.c +# lustre/utils/create_iam.c +# lustre/utils/libiam.c +AC_CHECK_HEADERS([netdb.h endian.h]) +AC_CHECK_FUNCS([gethostbyname]) -# libcfs/include/libcfs/linux/linux-prim.h, ... -AC_CHECK_HEADERS([linux/types.h sys/types.h linux/unistd.h unistd.h]) - -# libcfs/libcfs/user-tcpip.c -AC_CHECK_HEADERS([netinet/in.h]) -AC_CHECK_FUNCS([inet_ntoa]) - -# libcfs/include/libcfs/linux/linux-prim.h -AC_CHECK_HEADERS([linux/random.h], [], [], - [#ifdef HAVE_LINUX_TYPES_H - #include - #endif - ]) +# lustre/utils/llverdev.c +AC_CHECK_HEADERS([blkid/blkid.h]) -# utils/llverfs.c +# lustre/utils/llverfs.c AC_CHECK_HEADERS([ext2fs/ext2fs.h]) SELINUX="" AC_CHECK_LIB([selinux], [is_selinux_enabled], - [AC_CHECK_HEADERS([selinux.h], + [AC_CHECK_HEADERS([selinux/selinux.h], [SELINUX="-lselinux" AC_DEFINE([HAVE_SELINUX], 1, [support for selinux ])], [AC_MSG_WARN([ -No selinux-devel package found, unable to build selinux enabled tools +No libselinux-devel package found, unable to build selinux enabled tools ]) ])], [AC_MSG_WARN([ @@ -1914,7 +2352,6 @@ AS_IF([test "x$enable_pgstat_track" = xyes], # AM_CONDITIONALS for lustre # AC_DEFUN([LC_CONDITIONALS], [ -AM_CONDITIONAL(LIBLUSTRE, false) AM_CONDITIONAL(MPITESTS, test x$enable_mpitests = xyes, Build MPI Tests) AM_CONDITIONAL(CLIENT, test x$enable_client = xyes) AM_CONDITIONAL(SERVER, test x$enable_server = xyes) @@ -1943,14 +2380,16 @@ lustre/contrib/Makefile lustre/doc/Makefile lustre/include/Makefile lustre/include/lustre_ver.h -lustre/include/linux/Makefile lustre/include/lustre/Makefile lustre/kernel_patches/targets/3.10-rhel7.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/3.0-sles11.target lustre/kernel_patches/targets/3.0-sles11sp3.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 lustre/kernel_patches/targets/2.6-fc15.target @@ -1970,8 +2409,6 @@ lustre/lfsck/Makefile lustre/lfsck/autoMakefile lustre/mdt/Makefile lustre/mdt/autoMakefile -lustre/nodemap/Makefile -lustre/nodemap/autoMakefile lustre/mdd/Makefile lustre/mdd/autoMakefile lustre/fld/Makefile