X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fautoconf%2Flustre-core.m4;h=f47bc5f7e63781b46d327d99f6ad3cbe192ed7ab;hb=1e60ce443bdb4d1211758b0e53aea597bbdbc22d;hp=1ace1f6a3aa920f3f6b2c8204b2fbeb53e2e274d;hpb=615e9b48c65be67d9b7e0cd3a7ec226eba7f45fc;p=fs%2Flustre-release.git diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index 1ace1f6..f47bc5f 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -216,10 +216,10 @@ AC_DEFUN([LC_QUOTA_CONFIG], ]) ]) -# truncate_complete_page() was exported from RHEL5/SLES10, but not in SLES11 SP0 (2.6.27) +# truncate_complete_page() has never been exported from an upstream kernel # remove_from_page_cache() was exported between 2.6.35 and 2.6.38 # delete_from_page_cache() is exported from 2.6.39 -AC_DEFUN([LC_EXPORT_TRUNCATE_COMPLETE], +AC_DEFUN([LC_EXPORT_TRUNCATE_COMPLETE_PAGE], [LB_CHECK_SYMBOL_EXPORT([truncate_complete_page], [mm/truncate.c], [AC_DEFINE(HAVE_TRUNCATE_COMPLETE_PAGE, 1, @@ -235,26 +235,6 @@ AC_DEFUN([LC_EXPORT_TRUNCATE_COMPLETE], ]) # -# added in 2.6.17 -# -AC_DEFUN([LC_BIT_SPINLOCK_H], -[LB_CHECK_FILE([$LINUX/include/linux/bit_spinlock.h],[ - AC_MSG_CHECKING([if bit_spinlock.h can be compiled]) - LB_LINUX_TRY_COMPILE([ - #include - #include - #include - ],[],[ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_BIT_SPINLOCK_H, 1, [Kernel has bit_spinlock.h]) - ],[ - AC_MSG_RESULT([no]) - ]) -], -[]) -]) - -# # LC_CAPA_CRYPTO # AC_DEFUN([LC_CAPA_CRYPTO], @@ -282,35 +262,47 @@ AC_DEFUN([LC_CONFIG_RMTCLIENT], ]) # -# LC_CONFIG_GSS_KEYRING (default enabled, if gss is enabled) +# LC_CONFIG_GSS_KEYRING (default 'auto', tests for dependencies, if found, enables; only called if gss is enabled) # AC_DEFUN([LC_CONFIG_GSS_KEYRING], [AC_MSG_CHECKING([whether to enable gss keyring backend]) AC_ARG_ENABLE([gss_keyring], [AC_HELP_STRING([--disable-gss-keyring], [disable gss keyring backend])], - [],[enable_gss_keyring='yes']) + [],[enable_gss_keyring='auto']) AC_MSG_RESULT([$enable_gss_keyring]) if test x$enable_gss_keyring != xno; then - LB_LINUX_CONFIG_IM([KEYS],[], - [AC_MSG_ERROR([GSS keyring backend require that CONFIG_KEYS be enabled in your kernel.])]) + LB_LINUX_CONFIG_IM([KEYS],[], + [gss_keyring_conf_test='fail'; + AC_MSG_WARN([GSS keyring backend require that CONFIG_KEYS be enabled in your kernel.])]) - AC_CHECK_LIB([keyutils], [keyctl_search], [], - [AC_MSG_ERROR([libkeyutils is not found, which is required by gss keyring backend])],) + 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_DEFINE([HAVE_GSS_KEYRING], [1], - [Define this if you enable gss keyring backend]) + if test x$gss_keyring_conf_test != xfail; then + AC_DEFINE([HAVE_GSS_KEYRING], [1], [Define this if you enable gss keyring backend]) + enable_gss_keyring='yes' + else + if test x$enable_gss_keyring == xyes; then + AC_MSG_ERROR([Cannot enable gss_keyring. See above for details.]) + else + AC_MSG_WARN([Cannot enable gss keyring. See above for details.]) + fi + fi fi ]) AC_DEFUN([LC_CONFIG_SUNRPC], [LB_LINUX_CONFIG_IM([SUNRPC],[], - [AC_MSG_ERROR([kernel SUNRPC support is required by using GSS.])]) + [if test x$sunrpc_required == xyes; then + AC_MSG_ERROR([kernel SUNRPC support is required by using GSS.]) + fi]) ]) # -# LC_CONFIG_GSS (default disabled) +# LC_CONFIG_GSS (default 'auto' (tests for dependencies, if found, enables)) # # Build gss and related tools of Lustre. Currently both kernel and user space # parts are depend on linux platform. @@ -319,209 +311,55 @@ AC_DEFUN([LC_CONFIG_GSS], [AC_MSG_CHECKING([whether to enable gss/krb5 support]) AC_ARG_ENABLE([gss], [AC_HELP_STRING([--enable-gss], [enable gss/krb5 support])], - [],[enable_gss='no']) + [],[enable_gss='auto']) AC_MSG_RESULT([$enable_gss]) - if test x$enable_gss == xyes; then + if test x$enable_gss != xno; then LC_CONFIG_GSS_KEYRING - LC_CONFIG_SUNRPC - - AC_DEFINE([HAVE_GSS], [1], [Define this if you enable gss]) - - LB_LINUX_CONFIG_IM([CRYPTO_MD5],[], - [AC_MSG_WARN([kernel MD5 support is recommended by using GSS.])]) - LB_LINUX_CONFIG_IM([CRYPTO_SHA1],[], - [AC_MSG_WARN([kernel SHA1 support is recommended by using GSS.])]) - LB_LINUX_CONFIG_IM([CRYPTO_SHA256],[], - [AC_MSG_WARN([kernel SHA256 support is recommended by using GSS.])]) - LB_LINUX_CONFIG_IM([CRYPTO_SHA512],[], - [AC_MSG_WARN([kernel SHA512 support is recommended by using GSS.])]) - - AC_CHECK_LIB([gssapi], [gss_export_lucid_sec_context], - [GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssapi"], - [AC_CHECK_LIB([gssglue], [gss_export_lucid_sec_context], - [GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssglue"], - [AC_MSG_ERROR([libgssapi or libgssglue is not found, which is required by GSS.])])],) + sunrpc_required=$enable_gss + LC_CONFIG_SUNRPC + sunrpc_required=no + + LB_LINUX_CONFIG_IM([CRYPTO_MD5],[], + [AC_MSG_WARN([kernel MD5 support is recommended by using GSS.])]) + LB_LINUX_CONFIG_IM([CRYPTO_SHA1],[], + [AC_MSG_WARN([kernel SHA1 support is recommended by using GSS.])]) + LB_LINUX_CONFIG_IM([CRYPTO_SHA256],[], + [AC_MSG_WARN([kernel SHA256 support is recommended by using GSS.])]) + LB_LINUX_CONFIG_IM([CRYPTO_SHA512],[], + [AC_MSG_WARN([kernel SHA512 support is recommended by using GSS.])]) + + require_krb5=$enable_gss + AC_KERBEROS_V5 + require_krb5=no + + if test x$KRBDIR != x; then + 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'], + [if test x$enable_gss == xyes; then + AC_MSG_ERROR([libgssapi or libgssglue is not found, which is required by GSS.]) + else + AC_MSG_WARN([libgssapi or libgssglue is not found, which is required by GSS.]) + fi])],) + AC_SUBST(GSSAPI_LIBS) + fi - AC_SUBST(GSSAPI_LIBS) + if test x$gss_conf_test == xsuccess; then + AC_DEFINE([HAVE_GSS], [1], [Define this is if you enable gss]) + enable_gss='yes' + fi - AC_KERBEROS_V5 fi ]) -# 2.6.12 - -# ~2.6.12 merge patch from oracle to convert tree_lock from spinlock to rwlock -# yet tree_lock is converted from rwlock to spin_lock since v2.6.26 -AC_DEFUN([LC_RW_TREE_LOCK], -[AC_MSG_CHECKING([if kernel has tree_lock as rwlock]) -tmp_flags="$EXTRA_KCFLAGS" -EXTRA_KCFLAGS="-Werror" -LB_LINUX_TRY_COMPILE([ - #include -],[ - struct address_space a; - - write_lock(&a.tree_lock); -],[ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_RW_TREE_LOCK, 1, [kernel has tree_lock as rw_lock]) -],[ - AC_MSG_RESULT([no]) -]) -EXTRA_KCFLAGS="$tmp_flags" -]) - -#2.6.18 + RHEL5 (fc6) - -# -# LC_LINUX_FIEMAP_H -# -# fiemap.h is added since v2.6.28 -# RHEL5 2.6.18 has it, while SLES10 2.6.27 does not -# -AC_DEFUN([LC_LINUX_FIEMAP_H], -[LB_CHECK_FILE([$LINUX/include/linux/fiemap.h],[ - AC_MSG_CHECKING([if fiemap.h can be compiled]) - LB_LINUX_TRY_COMPILE([ - #include - #include - ],[],[ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_LINUX_FIEMAP_H, 1, [Kernel has fiemap.h]) - ],[ - AC_MSG_RESULT([no]) - ]) -], -[]) -]) - -# raid5-zerocopy patch - -# -# LC_PAGE_CONSTANT -# -# In order to support raid5 zerocopy patch, we have to patch the kernel to make -# it support constant page, which means the page won't be modified during the -# IO. -# -AC_DEFUN([LC_PAGE_CONSTANT], -[AC_MSG_CHECKING([if kernel have PageConstant defined]) -LB_LINUX_TRY_COMPILE([ - #include - #include -],[ - #ifndef PG_constant - #error "Have no raid5 zcopy patch" - #endif -],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_PAGE_CONSTANT, 1, [kernel have PageConstant supported]) -],[ - AC_MSG_RESULT(no); -]) -]) - -# 2.6.22 - -# -# 2.6.19 check for FS_RENAME_DOES_D_MOVE flag -# -AC_DEFUN([LC_FS_RENAME_DOES_D_MOVE], -[AC_MSG_CHECKING([if kernel has FS_RENAME_DOES_D_MOVE flag]) -LB_LINUX_TRY_COMPILE([ - #include -],[ - int v __attribute__ ((unused)); - v = FS_RENAME_DOES_D_MOVE; -],[ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_FS_RENAME_DOES_D_MOVE, 1, [kernel has FS_RENAME_DOES_D_MOVE flag]) -],[ - AC_MSG_RESULT([no]) -]) -]) - -# 2.6.24 - -# 2.6.24 has bio_endio with 2 args -AC_DEFUN([LC_BIO_ENDIO_2ARG], -[AC_MSG_CHECKING([if kernel has bio_endio with 2 args]) -LB_LINUX_TRY_COMPILE([ - #include -],[ - bio_endio(NULL, 0); -], [ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_BIO_ENDIO_2ARG, 1, - [kernel has bio_endio with 2 args]) -],[ - AC_MSG_RESULT([no]) -]) -]) - -# 2.6.24 removes long aged procfs entry -> deleted member -AC_DEFUN([LC_PROCFS_DELETED], -[AC_MSG_CHECKING([if kernel has deleted member in procfs entry struct]) -LB_LINUX_TRY_COMPILE([ - #include -],[ - struct proc_dir_entry pde; - - pde.deleted = sizeof(pde); -], [ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_PROCFS_DELETED, 1, - [kernel has deleted member in procfs entry struct]) -],[ - AC_MSG_RESULT([no]) -]) -]) - -# 2.6.26 - -# 2.6.26 isn't export set_fs_pwd and change paramter in fs struct -AC_DEFUN([LC_FS_STRUCT_USE_PATH], -[AC_MSG_CHECKING([fs_struct use path structure]) -LB_LINUX_TRY_COMPILE([ - #include - #include - #include -],[ - struct fs_struct fs; - - fs.pwd = *((struct path *)sizeof(fs)); -], [ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_FS_STRUCT_USE_PATH, 1, - [fs_struct use path structure]) -],[ - AC_MSG_RESULT([no]) -]) -]) - -# -# 2.6.27 -# - -# LC_SECURITY_PLUG # for SLES10 SP2 (2.6.27) -# check security plug in sles10 sp2 kernel -AC_DEFUN([LC_SECURITY_PLUG], -[AC_MSG_CHECKING([If kernel has security plug support]) -LB_LINUX_TRY_COMPILE([ - #include - #include -],[ - notify_change(NULL, NULL, NULL); -],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SECURITY_PLUG, 1, - [SLES10 SP2 use extra parameter in vfs]) -],[ - AC_MSG_RESULT(no) -]) -]) - +# up to v2.6.27 had a 3 arg version (inode, mask, nameidata) +# v2.6.27->v2.6.37 had a 2 arg version (inode, mask) +# v2.6.37->v3.0 had a 3 arg version (inode, mask, nameidata) +# v3.1 onward have a 2 arg version (inode, mask) AC_DEFUN([LC_INODE_PERMISION_2ARGS], [AC_MSG_CHECKING([inode_operations->permission has two args]) LB_LINUX_TRY_COMPILE([ @@ -540,39 +378,19 @@ LB_LINUX_TRY_COMPILE([ ]) ]) -# 2.6.27 use 5th parameter in quota_on for remount. -AC_DEFUN([LC_QUOTA_ON_5ARGS], -[AC_MSG_CHECKING([quota_on needs 5 parameters]) -LB_LINUX_TRY_COMPILE([ - #include - #include -],[ - struct quotactl_ops *qop = NULL; - qop->quota_on(NULL, 0, 0, NULL, 0); -],[ - AC_DEFINE(HAVE_QUOTA_ON_5ARGS, 1, - [quota_on needs 5 paramters]) - AC_MSG_RESULT([yes]) -],[ - AC_MSG_RESULT([no]) -]) -]) - -# 2.6.27 use 3th parameter in quota_off for remount. -AC_DEFUN([LC_QUOTA_OFF_3ARGS], -[AC_MSG_CHECKING([quota_off needs 3 parameters]) +# 2.6.32 replaces 2 functions blk_queue_max_phys_segments and blk_queue_max_hw_segments by blk_queue_max_segments +AC_DEFUN([LC_BLK_QUEUE_MAX_SEGMENTS], +[AC_MSG_CHECKING([if blk_queue_max_segments is defined]) LB_LINUX_TRY_COMPILE([ - #include - #include + #include ],[ - struct quotactl_ops *qop = NULL; - qop->quota_off(NULL, 0, 0); + blk_queue_max_segments(NULL, 0); ],[ - AC_DEFINE(HAVE_QUOTA_OFF_3ARGS, 1, - [quota_off needs 3 paramters]) - AC_MSG_RESULT([yes]) + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BLK_QUEUE_MAX_SEGMENTS, 1, + [blk_queue_max_segments is defined]) ],[ - AC_MSG_RESULT([no]) + AC_MSG_RESULT(no) ]) ]) @@ -585,14 +403,26 @@ LB_LINUX_TRY_COMPILE([ #include #include ],[ - struct quotactl_ops qops = {}; - struct fs_disk_quota fdq; - qops.set_dqblk(NULL, 0, 0, &fdq); + ((struct quotactl_ops *)0)->set_dqblk(NULL, 0, 0, (struct fs_disk_quota*)0); ],[ AC_DEFINE(HAVE_DQUOT_FS_DISK_QUOTA, 1, [quotactl_ops.set_dqblk takes struct fs_disk_quota]) AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) + AC_MSG_CHECKING([if quotactl_ops.set_dqblk takes struct kqid & fs_disk_quota]) + LB_LINUX_TRY_COMPILE([ + #include + #include + ],[ + ((struct quotactl_ops *)0)->set_dqblk((struct super_block*)0, *((struct kqid*)0), (struct fs_disk_quota*)0); + ],[ + AC_DEFINE(HAVE_DQUOT_FS_DISK_QUOTA, 1, [quotactl_ops.set_dqblk takes struct fs_disk_quota]) + AC_DEFINE(HAVE_DQUOT_KQID, 1, [quotactl_ops.set_dqblk takes struct kqid]) + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_CHECKING([if quotactl_ops.set_dqblk takes struct kqid&fs_disk_quota]) + ]) ]) EXTRA_KCFLAGS="$tmp_flags" ]) @@ -612,63 +442,6 @@ LB_LINUX_TRY_COMPILE([ ]) ]) -# 2.6.27.15-2 sles11 - -# 2.6.27 sles11 remove the bi_hw_segments -AC_DEFUN([LC_BI_HW_SEGMENTS], -[AC_MSG_CHECKING([struct bio has a bi_hw_segments field]) -LB_LINUX_TRY_COMPILE([ - #include -],[ - struct bio io; - io.bi_hw_segments = sizeof(io); -],[ - AC_DEFINE(HAVE_BI_HW_SEGMENTS, 1, - [struct bio has a bi_hw_segments field]) - AC_MSG_RESULT([yes]) -],[ - AC_MSG_RESULT([no]) -]) -]) - -# -# 2.6.27 sles11 move the quotaio_v1{2}.h from include/linux to fs -# 2.6.32 move the quotaio_v1{2}.h from fs to fs/quota -AC_DEFUN([LC_HAVE_QUOTAIO_H], -[LB_CHECK_FILE([$LINUX/include/linux/quotaio_v2.h],[ - AC_DEFINE(HAVE_QUOTAIO_H, 1, - [kernel has include/linux/quotaio_v2.h]) -],[LB_CHECK_FILE([$LINUX/fs/quotaio_v2.h],[ - AC_DEFINE(HAVE_FS_QUOTAIO_H, 1, - [kernel has fs/quotaio_v1.h]) -],[LB_CHECK_FILE([$LINUX/fs/quota/quotaio_v2.h],[ - AC_DEFINE(HAVE_FS_QUOTA_QUOTAIO_H, 1, - [kernel has fs/quota/quotaio_v2.h]) -],[ - AC_MSG_RESULT([no]) -]) -]) -]) -]) - -# 2.6.32 - -# 2.6.32 replaces 2 functions blk_queue_max_phys_segments and blk_queue_max_hw_segments by blk_queue_max_segments -AC_DEFUN([LC_BLK_QUEUE_MAX_SEGMENTS], -[AC_MSG_CHECKING([if blk_queue_max_segments is defined]) -LB_LINUX_TRY_COMPILE([ - #include -],[ - blk_queue_max_segments(NULL, 0); -],[ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_BLK_QUEUE_MAX_SEGMENTS, 1, - [blk_queue_max_segments is defined]) -],[ - AC_MSG_RESULT(no) -]) -]) - # # LC_QUOTA64 # @@ -881,28 +654,6 @@ AC_DEFINE(HAVE_BLKDEV_GET_BY_DEV, 1, ]) # -# 2.6.38 use path as 4th parameter in quota_on. -# -AC_DEFUN([LC_QUOTA_ON_USE_PATH], -[AC_MSG_CHECKING([quota_on use path as parameter]) -tmp_flags="$EXTRA_KCFLAGS" -EXTRA_KCFLAGS="-Werror" -LB_LINUX_TRY_COMPILE([ - #include - #include -],[ - ((struct quotactl_ops *)0)->quota_on(NULL, 0, 0, ((struct path*)0)); -],[ - AC_DEFINE(HAVE_QUOTA_ON_USE_PATH, 1, - [quota_on use path as 4th paramter]) - AC_MSG_RESULT([yes]) -],[ - AC_MSG_RESULT([no]) -]) -EXTRA_KCFLAGS="$tmp_flags" -]) - -# # 2.6.38 export simple_setattr # AC_DEFUN([LC_EXPORT_SIMPLE_SETATTR], @@ -915,6 +666,24 @@ AC_DEFINE(HAVE_SIMPLE_SETATTR, 1, ]) # +# truncate callback removed since 2.6.39 +# +AC_DEFUN([LC_IOP_TRUNCATE], +[AC_MSG_CHECKING([inode_operations has .truncate member function]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + ((struct inode_operations *)0)->truncate(NULL); +],[ + AC_DEFINE(HAVE_INODEOPS_TRUNCATE, 1, + [inode_operations has .truncate member function]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# # 2.6.39 remove unplug_fn from request_queue. # AC_DEFUN([LC_REQUEST_QUEUE_UNPLUG_FN], @@ -1065,26 +834,6 @@ LB_LINUX_TRY_COMPILE([ ]) # -# 3.1.1 has ext4_blocks_for_truncate -# -AC_DEFUN([LC_BLOCKS_FOR_TRUNCATE], -[AC_MSG_CHECKING([if kernel has ext4_blocks_for_truncate]) -LB_LINUX_TRY_COMPILE([ - #include - #include "$LINUX/fs/ext4/ext4_jbd2.h" - #include "$LINUX/fs/ext4/truncate.h" -],[ - ext4_blocks_for_truncate(NULL); -],[ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_BLOCKS_FOR_TRUNCATE, 1, - [kernel has ext4_blocks_for_truncate]) -],[ - AC_MSG_RESULT([no]) -]) -]) - -# # 3.1 introduced generic_file_llseek_size() # AC_DEFUN([LC_FILE_LLSEEK_SIZE], @@ -1439,6 +1188,24 @@ LB_LINUX_TRY_COMPILE([ ]) # +# 3.8 struct file has new memeber f_inode +# +AC_DEFUN([LC_HAVE_FILE_F_INODE], +[AC_MSG_CHECKING([if struct file has memeber f_inode]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + ((struct file *)0)->f_inode = NULL; +],[ + AC_DEFINE(HAVE_FILE_F_INODE, 1, + [struct file has memeber f_inode]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# # 3.9 uses hlist_for_each_entry with 3 args # b67bfe0d42cac56c512dd5da4b1b347a23f4b70a # @@ -1484,6 +1251,61 @@ LB_LINUX_TRY_COMPILE([ ]) # +# 3.10+ only supports procfs seq_files handling +# +AC_DEFUN([LC_HAVE_ONLY_PROCFS_SEQ], +[AC_MSG_CHECKING([if procfs only supports using seq_files]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + ((struct proc_dir_entry *)0)->write_proc(NULL, NULL, 0, NULL); +],[ + AC_MSG_RESULT([no]) +],[ + AC_DEFINE(HAVE_ONLY_PROCFS_SEQ, 1, [only seq_files supported]) + AC_MSG_RESULT([yes]) +]) +]) + +# 3.10 release for block device doesn't return int +AC_DEFUN([LC_BLKDEV_RELEASE_RETURN_INT], +[AC_MSG_CHECKING([if block_device_operations release returns int]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct block_device_operations fops; + int i __attribute__ ((unused)); + + i = fops.release(NULL,0); +],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_BLKDEV_RELEASE_RETURN_INT, 1, + [block device release returns int]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# +# 3.11 need to access d_count to get dentry reference count +# +AC_DEFUN([LC_HAVE_DCOUNT], +[AC_MSG_CHECKING([if d_count exist]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct dentry de; + + d_count(&de); +],[ + AC_DEFINE(HAVE_D_COUNT, 1, [d_count exist]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# # LC_PROG_LINUX # # Lustre linux kernel checks @@ -1497,46 +1319,12 @@ AC_DEFUN([LC_PROG_LINUX], LC_CONFIG_LRU_RESIZE LC_LLITE_LLOOP_MODULE - # RHEL4 patches - LC_EXPORT_TRUNCATE_COMPLETE - - LC_BIT_SPINLOCK_H - LC_CAPA_CRYPTO LC_CONFIG_RMTCLIENT LC_CONFIG_GSS - # 2.6.12 - LC_RW_TREE_LOCK - - #2.6.18 + RHEL5 (fc6) - LC_LINUX_FIEMAP_H - - # raid5-zerocopy patch - LC_PAGE_CONSTANT - - # 2.6.22 - LC_FS_RENAME_DOES_D_MOVE - - # 2.6.24 - LC_BIO_ENDIO_2ARG - LC_PROCFS_DELETED - - # 2.6.26 - LC_FS_STRUCT_USE_PATH - - # 2.6.27 - LC_SECURITY_PLUG # for SLES10 SP2 - LC_INODE_PERMISION_2ARGS - LC_QUOTA_ON_5ARGS - LC_QUOTA_OFF_3ARGS - - # 2.6.27.15-2 sles11 - LC_BI_HW_SEGMENTS - LC_HAVE_QUOTAIO_H - - # 2.6.32 - LC_BLK_QUEUE_MAX_SEGMENTS + # 2.6.32 + LC_BLK_QUEUE_MAX_SEGMENTS # 2.6.34 LC_HAVE_DQUOT_FS_DISK_QUOTA @@ -1545,6 +1333,7 @@ AC_DEFUN([LC_PROG_LINUX], # 2.6.35, 3.0.0 LC_FILE_FSYNC LC_EXPORT_SIMPLE_SETATTR + LC_EXPORT_TRUNCATE_COMPLETE_PAGE # 2.6.36 LC_FS_STRUCT_RWLOCK @@ -1556,7 +1345,6 @@ AC_DEFUN([LC_PROG_LINUX], # 2.6.38 LC_BLKDEV_GET_BY_DEV LC_GENERIC_PERMISSION - LC_QUOTA_ON_USE_PATH LC_DCACHE_LOCK LC_INODE_I_RCU LC_D_COMPARE_7ARGS @@ -1565,6 +1353,7 @@ AC_DEFUN([LC_PROG_LINUX], # 2.6.39 LC_REQUEST_QUEUE_UNPLUG_FN LC_HAVE_FSTYPE_MOUNT + LC_IOP_TRUNCATE # 3.0 LC_DIRTY_INODE_WITH_FLAG @@ -1574,9 +1363,7 @@ AC_DEFUN([LC_PROG_LINUX], LC_INODE_DIO_WAIT LC_IOP_GET_ACL LC_FILE_LLSEEK_SIZE - - # 3.1.1 - LC_BLOCKS_FOR_TRUNCATE + LC_INODE_PERMISION_2ARGS # 3.2 LC_HAVE_VOID_MAKE_REQUEST_FN @@ -1604,15 +1391,24 @@ AC_DEFUN([LC_PROG_LINUX], LC_HAVE_IOP_ATOMIC_OPEN # 3.7 - LC_HAVE_POSIXACL_USER_NS + LC_HAVE_POSIXACL_USER_NS + + # 3.8 + LC_HAVE_FILE_F_INODE # 3.9 LC_HAVE_HLIST_FOR_EACH_3ARG LC_HAVE_F_PATH_MNT + # 3.10 + LC_HAVE_ONLY_PROCFS_SEQ + LC_BLKDEV_RELEASE_RETURN_INT + + # 3.11 + LC_HAVE_DCOUNT + # - if test x$enable_server = xyes ; then - AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server]) + if test x$enable_server != xno ; then LC_FUNC_DEV_SET_RDONLY LC_STACK_SIZE LC_QUOTA64 @@ -1621,24 +1417,18 @@ AC_DEFUN([LC_PROG_LINUX], ]) # -# LC_CONFIG_CLIENT_SERVER +# LC_CONFIG_CLIENT # -# Build client/server sides of Lustre +# Check whether to build the client side of Lustre # -AC_DEFUN([LC_CONFIG_CLIENT_SERVER], -[AC_MSG_CHECKING([whether to build Lustre server support]) -AC_ARG_ENABLE([server], - AC_HELP_STRING([--disable-server], - [disable Lustre server support]), - [],[enable_server='yes']) -AC_MSG_RESULT([$enable_server]) - -AC_MSG_CHECKING([whether to build Lustre client support]) +AC_DEFUN([LC_CONFIG_CLIENT], +[AC_MSG_CHECKING([whether to build Lustre client support]) AC_ARG_ENABLE([client], AC_HELP_STRING([--disable-client], [disable Lustre client support]), [],[enable_client='yes']) -AC_MSG_RESULT([$enable_client])]) +AC_MSG_RESULT([$enable_client]) +]) # # LC_CONFIG_LIBLUSTRE @@ -1745,9 +1535,11 @@ AC_DEFUN([LC_QUOTA], [#check global LC_CONFIG_QUOTA #check for utils +if test x$enable_quota != xno -a x$enable_utils != xno; then AC_CHECK_HEADER(sys/quota.h, [AC_DEFINE(HAVE_SYS_QUOTA_H, 1, [Define to 1 if you have .])], [AC_MSG_ERROR([don't find in your system])]) +fi ]) # @@ -1860,7 +1652,7 @@ AC_CHECK_FUNCS([inet_ntoa]) # libsysio/src/readlink.c LC_READLINK_SSIZE_T -# lvfs/prng.c - depends on linux/types.h from liblustre/dir.c +# libcfs prng.c - depends on linux/types.h from liblustre/dir.c AC_CHECK_HEADERS([linux/random.h], [], [], [#ifdef HAVE_LINUX_TYPES_H # include @@ -1957,7 +1749,6 @@ fi # AC_DEFUN([LC_CONDITIONALS], [AM_CONDITIONAL(LIBLUSTRE, test x$enable_liblustre = xyes) -AM_CONDITIONAL(USE_QUILT, test x$QUILT != xno) AM_CONDITIONAL(LIBLUSTRE_TESTS, test x$enable_liblustre_tests = xyes) AM_CONDITIONAL(MPITESTS, test x$enable_mpitests = xyes, Build MPI Tests) AM_CONDITIONAL(CLIENT, test x$enable_client = xyes) @@ -1994,6 +1785,7 @@ 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/2.6-fc11.target lustre/kernel_patches/targets/2.6-fc12.target lustre/kernel_patches/targets/2.6-fc15.target @@ -2009,8 +1801,6 @@ lustre/llite/autoMakefile lustre/lclient/Makefile lustre/lov/Makefile lustre/lov/autoMakefile -lustre/lvfs/Makefile -lustre/lvfs/autoMakefile lustre/mdc/Makefile lustre/mdc/autoMakefile lustre/lmv/Makefile