X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fautoconf%2Flustre-core.m4;h=e8802dc81f32fe7c215437be4429d6cf407ed2b4;hb=84bcd1360516a4684a686d8e5f0b59b3ab231c6e;hp=c6e5e29e39d5a3393bf06c2e94443c0b0043f7fa;hpb=4f79081a4b9afe73de61ab8df619912399d0f786;p=fs%2Flustre-release.git diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index c6e5e29..e8802dc 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -82,6 +82,15 @@ AC_TRY_COMPILE([ ]) ]) +AC_DEFUN([LC_GLIBC_SUPPORT_FHANDLES], +[AC_CHECK_FUNCS([name_to_handle_at],[ + AC_DEFINE(HAVE_FHANDLE_GLIBC_SUPPORT, 1, + [file handle and related syscalls are supported]) +],[ + AC_MSG_WARN([file handle and related syscalls are not supported]) +]) +]) + # # LC_FUNC_DEV_SET_RDONLY # @@ -257,42 +266,70 @@ dnl the AES symbol usually tied with arch, e.g. CRYPTO_AES_586 dnl FIXME AC_DEFUN([LC_CONFIG_RMTCLIENT], [LB_LINUX_CONFIG_IM([CRYPTO_AES],[],[ - AC_MSG_WARN([Lustre remote client require that CONFIG_CRYPTO_AES is enabled in your kernel.]) + AC_MSG_WARN([ + +Lustre remote client require that CONFIG_CRYPTO_AES is enabled in your kernel. +]) ]) ]) # -# 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], [], + [gss_keyring_conf_test='fail'; + AC_MSG_WARN([ - AC_CHECK_LIB([keyutils], [keyctl_search], [], - [AC_MSG_ERROR([libkeyutils is not found, which is required by gss keyring backend])],) +libkeyutils is not found, which is required by 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([ - AC_DEFINE([HAVE_GSS_KEYRING], [1], - [Define this if you enable gss keyring backend]) +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],[], [if test x$sunrpc_required == xyes; then - AC_MSG_ERROR([kernel SUNRPC support is required by using GSS.]) + 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. @@ -306,106 +343,52 @@ AC_DEFUN([LC_CONFIG_GSS], if test x$enable_gss != xno; then LC_CONFIG_GSS_KEYRING - sunrpc_required=$enable_gss - LC_CONFIG_SUNRPC + sunrpc_required=$enable_gss + LC_CONFIG_SUNRPC sunrpc_required=no - 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.])]) - - 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"], - [AC_CHECK_LIB([gssglue], [gss_export_lucid_sec_context], - [GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssglue"], - [if test x$enable_gss == xyes; then - AC_MSG_ERROR([libgssapi or libgssglue is not found, which is required by GSS.]) - fi])],) - AC_SUBST(GSSAPI_LIBS) - fi - fi -]) - -#2.6.18 + RHEL5 (fc6) - -# 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.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]) -]) -]) + 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 -# 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; + if test x$gss_conf_test == xsuccess; then + AC_DEFINE([HAVE_GSS], [1], [Define this is if you enable gss]) + enable_gss='yes' + fi - 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]) -]) + fi ]) -# -# 2.6.27 -# - # 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) @@ -428,39 +411,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) ]) ]) @@ -473,14 +436,25 @@ 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]) + ]) ]) EXTRA_KCFLAGS="$tmp_flags" ]) @@ -500,63 +474,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 # @@ -769,28 +686,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], @@ -803,6 +698,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], @@ -840,6 +753,18 @@ LB_LINUX_TRY_COMPILE([ ]) # +# 2.6.39 The open_by_handle_at() and name_to_handle_at() system calls were +# added to Linux kernel 2.6.39. +# Check if client supports these functions +# +AC_DEFUN([LC_HAVE_FHANDLE_SYSCALLS], +[LB_LINUX_CONFIG_IM([FHANDLE],[ + AC_DEFINE(HAVE_FHANDLE_SYSCALLS, 1, + [kernel supports fhandles and related syscalls]) +],[]) +]) + +# # 3.0 dirty_inode() has a flag parameter # see kernel commit aa38572954ade525817fe88c54faebf85e5a61c0 # @@ -953,26 +878,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], @@ -1136,18 +1041,18 @@ LB_LINUX_TRY_COMPILE([ ]) # -# 3.4 switchs touch_atime to struct path -# see kernel commit 68ac1234fb949b66941d94dce4157742799fc581 +# 3.4 converts d_alloc_root to d_make_root +# see kernel commit 32991ab305ace7017c62f8eecbe5eb36dc32e13b # -AC_DEFUN([LC_TOUCH_ATIME_1ARG], -[AC_MSG_CHECKING([if touch_atime use one argument]) +AC_DEFUN([LC_HAVE_D_MAKE_ROOT], +[AC_MSG_CHECKING([if have d_make_root]) LB_LINUX_TRY_COMPILE([ #include ],[ - touch_atime((struct path *)NULL); + d_make_root((struct inode *)NULL); ],[ - AC_DEFINE(HAVE_TOUCH_ATIME_1ARG, 1, - [touch_atime use one argument]) + AC_DEFINE(HAVE_D_MAKE_ROOT, 1, + [have d_make_root]) AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) @@ -1155,18 +1060,22 @@ LB_LINUX_TRY_COMPILE([ ]) # -# 3.4 converts d_alloc_root to d_make_root -# see kernel commit 32991ab305ace7017c62f8eecbe5eb36dc32e13b +# 3.4 cache_register/cache_unregister are removed +# see kernel commit 2c5f846747526e2b83c5f1b8e69016be0e2e87c0 +# Note, since 2.6.37 cache_register_net/cache_unregister_net +# are defined, but not exported. +# 3.3 cache_register_net/cache_unregister_net are +# exported and replacing cache_register/cache_unregister in 3.4 # -AC_DEFUN([LC_HAVE_D_MAKE_ROOT], -[AC_MSG_CHECKING([if have d_make_root]) +AC_DEFUN([LC_HAVE_CACHE_REGISTER], +[AC_MSG_CHECKING([if have cache_register]) LB_LINUX_TRY_COMPILE([ - #include + #include ],[ - d_make_root((struct inode *)NULL); + cache_register(NULL); ],[ - AC_DEFINE(HAVE_D_MAKE_ROOT, 1, - [have d_make_root]) + AC_DEFINE(HAVE_CACHE_REGISTER, 1, + [have cache_register]) AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) @@ -1327,6 +1236,39 @@ LB_LINUX_TRY_COMPILE([ ]) # +# 3.8 struct file has new member 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]) +]) +]) + +AC_DEFUN([LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS], +[AC_MSG_CHECKING([if sunrpc_cache_pipe_upcall takes 3 args]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + sunrpc_cache_pipe_upcall(NULL, NULL, NULL); +],[ + AC_DEFINE(HAVE_SUNRPC_UPCALL_HAS_3ARGS, 1, + [sunrpc_cache_pipe_upcall takes 3 args]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# # 3.9 uses hlist_for_each_entry with 3 args # b67bfe0d42cac56c512dd5da4b1b347a23f4b70a # @@ -1350,21 +1292,144 @@ LB_LINUX_TRY_COMPILE([ ]) # -# 3.9 killed f_vfsmnt by -# 182be684784334598eee1d90274e7f7aa0063616 -# replacement is f_path.mnt +# 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 invalidatepage requires the length of the range to invalidate +# +AC_DEFUN([LC_INVALIDATE_RANGE], +[AC_MSG_CHECKING([if address_space_operations.invalidatepage requires 3 arguments]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct address_space_operations a_ops; + + a_ops.invalidatepage(NULL,0,0); +],[ + AC_DEFINE(HAVE_INVALIDATE_RANGE, 1, [address_space_operations.invalidatepage needs 3 arguments]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# +# 3.11 readdir now takes the new struct dir_context # -AC_DEFUN([LC_HAVE_F_PATH_MNT], -[AC_MSG_CHECKING([if struct file has f_path.mnt]) +AC_DEFUN([LC_HAVE_DIR_CONTEXT], +[AC_MSG_CHECKING([if dir_context exist]) LB_LINUX_TRY_COMPILE([ #include ],[ - struct file *fp = NULL; - struct path path; + struct dir_context ctx; - path.mnt = fp->f_path.mnt; + ctx.pos = 0; +],[ + AC_DEFINE(HAVE_DIR_CONTEXT, 1, [dir_context exist]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# +# 3.11 dentry_operations.d_compare() taken 5 arguments. +# +AC_DEFUN([LC_D_COMPARE_5ARGS], +[AC_MSG_CHECKING([if d_compare taken 5 arguments]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + ((struct dentry_operations*)0)->d_compare(NULL,NULL,0,NULL,NULL); ],[ - AC_DEFINE(HAVE_F_PATH_MNT,1,[yes]) + AC_DEFINE(HAVE_D_COMPARE_5ARGS, 1, + [d_compare need 5 arguments]) + AC_MSG_RESULT([yes]) +],[ + 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]) +]) +]) + +# +# 3.12 truncate_pagecache without oldsize parameter +# +AC_DEFUN([LC_OLDSIZE_TRUNCATE_PAGECACHE], +[AC_MSG_CHECKING([if truncate_pagecache with old_size parameter]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + truncate_pagecache(NULL, 0, 0); +],[ + AC_DEFINE(HAVE_OLDSIZE_TRUNCATE_PAGECACHE, 1, [with oldsize]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# +# 3.12 ki_left removed from struct kiocb +# +AC_DEFUN([LC_KIOCB_KI_LEFT], +[AC_MSG_CHECKING([if struct kiocb with ki_left member]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + ((struct kiocb*)0)->ki_left = 0; +],[ + AC_DEFINE(HAVE_KIOCB_KI_LEFT, 1, [ki_left exist]) AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) @@ -1385,27 +1450,13 @@ AC_DEFUN([LC_PROG_LINUX], LC_CONFIG_LRU_RESIZE LC_LLITE_LLOOP_MODULE - LC_CAPA_CRYPTO - LC_CONFIG_RMTCLIENT - LC_CONFIG_GSS - - # raid5-zerocopy patch - LC_PAGE_CONSTANT + LC_GLIBC_SUPPORT_FHANDLES + LC_CAPA_CRYPTO + LC_CONFIG_RMTCLIENT + LC_CONFIG_GSS - # 2.6.24 - LC_BIO_ENDIO_2ARG - LC_PROCFS_DELETED - - # 2.6.27 - 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 @@ -1426,15 +1477,16 @@ 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 LC_D_DELETE_CONST - # 2.6.39 - LC_REQUEST_QUEUE_UNPLUG_FN + # 2.6.39 + LC_REQUEST_QUEUE_UNPLUG_FN + LC_HAVE_FHANDLE_SYSCALLS LC_HAVE_FSTYPE_MOUNT + LC_IOP_TRUNCATE # 3.0 LC_DIRTY_INODE_WITH_FLAG @@ -1446,9 +1498,6 @@ AC_DEFUN([LC_PROG_LINUX], LC_FILE_LLSEEK_SIZE LC_INODE_PERMISION_2ARGS - # 3.1.1 - LC_BLOCKS_FOR_TRUNCATE - # 3.2 LC_HAVE_VOID_MAKE_REQUEST_FN LC_HAVE_PROTECT_I_NLINK @@ -1458,9 +1507,9 @@ AC_DEFUN([LC_PROG_LINUX], LC_MIGRATEPAGE_4ARGS LC_SUPEROPS_USE_DENTRY LC_INODEOPS_USE_UMODE_T + LC_HAVE_CACHE_REGISTER # 3.4 - LC_TOUCH_ATIME_1ARG LC_HAVE_D_MAKE_ROOT LC_KMAP_ATOMIC_HAS_1ARG @@ -1477,9 +1526,26 @@ AC_DEFUN([LC_PROG_LINUX], # 3.7 LC_HAVE_POSIXACL_USER_NS + # 3.8 + LC_HAVE_FILE_F_INODE + LC_HAVE_SUNRPC_UPCALL_HAS_3ARGS + # 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_INVALIDATE_RANGE + LC_HAVE_DIR_CONTEXT + LC_D_COMPARE_5ARGS + LC_HAVE_DCOUNT + + # 3.12 + LC_OLDSIZE_TRUNCATE_PAGECACHE + LC_KIOCB_KI_LEFT # if test x$enable_server != xno ; then @@ -1634,6 +1700,23 @@ fi ]) # +# LC_CONFIG_NODEMAP_PROC_DEBUG +# +# enable nodemap proc file debugging +# +AC_DEFUN([LC_NODEMAP_PROC_DEBUG], +[AC_MSG_CHECKING([whether to enable nodemap proc debug]) +AC_ARG_ENABLE([nodemap_proc_debug], + AC_HELP_STRING([--enable-nodemap-proc-debug], + [enable nodemap proc debug]), + [],[enable_nodemap_proc_debug='no']) +AC_MSG_RESULT([$enable_nodemap_proc_debug]) +if test x$enable_nodemap_proc_debug != xno; then + AC_DEFINE(NODEMAP_PROC_DEBUG, 1, [enable nodemap proc debug support]) +fi +]) + +# # LC_LLITE_LLOOP_MODULE # lloop_llite.ko does not currently work with page sizes # of 64k or larger. @@ -1726,7 +1809,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 @@ -1744,9 +1827,14 @@ AC_CHECK_LIB([z], [ZLIB="-lz" AC_DEFINE([HAVE_ADLER], 1, [support alder32 checksum type])], - [AC_MSG_WARN([No zlib-devel package found, - unable to use adler32 checksum])])], - [AC_MSG_WARN([No zlib package found, unable to use adler32 checksum])] + [AC_MSG_WARN([ + +No zlib-devel package found, unable to use adler32 checksum +])])], + [AC_MSG_WARN([ + +No zlib package found, unable to use adler32 checksum +])] ) AC_SUBST(ZLIB) @@ -1757,11 +1845,14 @@ AC_CHECK_LIB([selinux], [SELINUX="-lselinux" AC_DEFINE([HAVE_SELINUX], 1, [support for selinux ])], - [AC_MSG_WARN([No selinux-devel package found, - unable to build selinux enabled - tools])])], - [AC_MSG_WARN([No selinux package found, unable to build selinux - enabled tools])] + [AC_MSG_WARN([ + +No selinux-devel package found, unable to build selinux enabled tools +])])], + [AC_MSG_WARN([ + +No selinux package found, unable to build selinux enabled tools +])] ) AC_SUBST(SELINUX) @@ -1859,6 +1950,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 @@ -1874,8 +1966,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 @@ -1884,6 +1974,8 @@ 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