AC_DEFUN([LC_CONFIG_SRCDIR],
[AC_CONFIG_SRCDIR([lustre/obdclass/obdo.c])
])
-
+
#
# LC_PATH_DEFAULTS
#
])
])
+#
+# LC_EXPORT_NR_FREE_BUFFER_PAGES
+# starting from 2.6.23 linux kernel exports nr_free_buffer_pages()
+#
+AC_DEFUN([LC_EXPORT_NR_FREE_BUFFER_PAGES],
+[LB_CHECK_SYMBOL_EXPORT([nr_free_buffer_pages],
+[mm/page_alloc.c],[
+ AC_DEFINE(HAVE_EXPORT_NR_FREE_BUFFER_PAGES, 1, [kernel exports nr_free_buffer_pages])
+],[
+ if test x$enable_server = xyes ; then
+ AC_MSG_ERROR([lustre server needs this symbol to be exported.])
+ fi
+])
+])
+
AC_DEFUN([LC_LUSTRE_VERSION_H],
[LB_CHECK_FILE([$LINUX/include/linux/lustre_version.h],[
])
])
+AC_DEFUN([LC_SUNRPC_CACHE],
+[AC_MSG_CHECKING([if sunrpc struct cache_head uses kref])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/sunrpc/cache.h>
+],[
+ struct cache_head ch;
+ &ch.ref.refcount;
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_SUNRPC_CACHE_V2, 1, [sunrpc cache facility v2])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+AC_DEFUN([LC_CONFIG_SUNRPC],
+[LB_LINUX_CONFIG_IM([SUNRPC],[],
+ [AC_MSG_ERROR([kernel SUNRPC support is required by using GSS.])])
+ LC_SUNRPC_CACHE
+])
+
#
# LC_CONFIG_GSS_KEYRING (default enabled, if gss is enabled)
#
if test x$enable_gss == xyes; then
LC_CONFIG_GSS_KEYRING
+ LC_CONFIG_SUNRPC
- LB_LINUX_CONFIG_IM([CRYPTO_DES],[],
- [AC_MSG_WARN([kernel DES support is recommended by using 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.])])
+ LB_LINUX_CONFIG_IM([CRYPTO_WP512],[],
+ [AC_MSG_WARN([kernel WP512 support is recommended by using GSS.])])
LB_LINUX_CONFIG_IM([CRYPTO_ARC4],[],
[AC_MSG_WARN([kernel ARC4 support is recommended by using GSS.])])
-
+ LB_LINUX_CONFIG_IM([CRYPTO_DES],[],
+ [AC_MSG_WARN([kernel DES support is recommended by using GSS.])])
+ LB_LINUX_CONFIG_IM([CRYPTO_TWOFISH],[],
+ [AC_MSG_WARN([kernel TWOFISH support is recommended by using GSS.])])
+ LB_LINUX_CONFIG_IM([CRYPTO_CAST6],[],
+ [AC_MSG_WARN([kernel CAST6 support is recommended by using GSS.])])
dnl FIXME
dnl the AES symbol usually tied with arch, e.g. CRYPTO_AES_586
dnl FIXME
AC_CHECK_LIB([gssapi], [gss_init_sec_context],
[GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssapi"],
- [AC_MSG_ERROR([libgssapi is not found, which is required by GSS.])],)
+ [AC_CHECK_LIB([gssglue], [gss_init_sec_context],
+ [GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssglue"],
+ [AC_MSG_ERROR([libgssapi or libgssglue is not found, which is required by GSS.])])],)
AC_SUBST(GSSAPI_LIBS)
LB_LINUX_TRY_COMPILE([
#include <linux/mutex.h>
#include <linux/fs.h>
+ #undef i_mutex
],[
struct inode i;
])
])
+# LC_SYMVERFILE
+# SLES 9 uses a different name for this file - unsure about vanilla kernels
+# around this version, but it matters for servers only.
+AC_DEFUN([LC_SYMVERFILE],
+ [AC_MSG_CHECKING([name of symverfile])
+ if grep -q Modules.symvers $LINUX/scripts/Makefile.modpost ; then
+ SYMVERFILE=Modules.symvers
+ else
+ SYMVERFILE=Module.symvers
+ fi
+ AC_MSG_RESULT($SYMVERFILE)
+ AC_SUBST(SYMVERFILE)])
# LC_DQUOTOFF_MUTEX
# after 2.6.17 dquote use mutex instead if semaphore
])
])
+# RHEL5 PageChecked and SetPageChecked defined
+AC_DEFUN([LC_PAGE_CHECKED],
+[AC_MSG_CHECKING([kernel has PageChecked and SetPageChecked])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/page-flags.h>
+],[
+ #ifndef PageChecked
+ #error PageChecked not defined in kernel
+ #endif
+ #ifndef SetPageChecked
+ #error SetPageChecked not defined in kernel
+ #endif
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_PAGE_CHECKED, 1,
+ [does kernel have PageChecked and SetPageChecked])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
AC_DEFUN([LC_EXPORT_TRUNCATE_COMPLETE],
[LB_CHECK_SYMBOL_EXPORT([truncate_complete_page],
[mm/truncate.c],[
])
])
+AC_DEFUN([LC_EXPORT_D_MOVE_LOCKED],
+[LB_CHECK_SYMBOL_EXPORT([d_move_locked],
+[fs/dcache.c],[
+AC_DEFINE(HAVE_D_MOVE_LOCKED, 1,
+ [d_move_locked is exported by the kernel])
+],[
+])
+])
+
+AC_DEFUN([LC_EXPORT___D_MOVE],
+[LB_CHECK_SYMBOL_EXPORT([__d_move],
+[fs/dcache.c],[
+AC_DEFINE(HAVE___D_MOVE, 1,
+ [__d_move is exported by the kernel])
+],[
+])
+])
+
# The actual symbol exported varies among architectures, so we need
# to check many symbols (but only in the current architecture.) No
# matter what symbol is exported, the kernel #defines node_to_cpumask
the kernel])]) # i386
])
+# 2.6.22 lost second parameter for invalidate_bdev
+AC_DEFUN([LC_INVALIDATE_BDEV_2ARG],
+[AC_MSG_CHECKING([if invalidate_bdev has second argument])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/buffer_head.h>
+],[
+ invalidate_bdev(NULL,0);
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_INVALIDATE_BDEV_2ARG, 1,
+ [invalidate_bdev has second argument])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+# 2.6.23 have return type 'void' for unregister_blkdev
+AC_DEFUN([LC_UNREGISTER_BLKDEV_RETURN_INT],
+[AC_MSG_CHECKING([if unregister_blkdev return int])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ int i = unregister_blkdev(0,NULL);
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_UNREGISTER_BLKDEV_RETURN_INT, 1,
+ [unregister_blkdev return int])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+# 2.6.23 change .sendfile to .splice_read
+AC_DEFUN([LC_KERNEL_SPLICE_READ],
+[AC_MSG_CHECKING([if kernel has .splice_read])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ struct file_operations file;
+
+ file.splice_read = NULL;
+], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_KERNEL_SPLICE_READ, 1,
+ [kernel has .slice_read])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+# 2.6.23 extract nfs export related data into exportfs.h
+AC_DEFUN([LC_HAVE_EXPORTFS_H],
+[
+tmpfl="$CFLAGS"
+CFLAGS="$CFLAGS -I$LINUX_OBJ/include"
+AC_CHECK_HEADERS([linux/exportfs.h])
+CFLAGS="$tmpfl"
+])
+
#
# LC_VFS_INTENT_PATCHES
#
AC_DEFUN([LC_CONST_ACL_SIZE],
[AC_MSG_CHECKING([calc acl size])
tmp_flags="$CFLAGS"
-CFLAGS="$CFLAGS -I $LINUX/include $EXTRA_KCFLAGS"
+CFLAGS="$CFLAGS -I $LINUX_OBJ/include $EXTRA_KCFLAGS"
AC_TRY_RUN([
+#define __KERNEL__
#include <linux/autoconf.h>
#include <linux/types.h>
+#undef __KERNEL__
// block include
#define __LINUX_POSIX_ACL_H
CFLAGS="$tmp_flags"
])
+#
+# check for crypto API
+#
+AC_DEFUN([LC_ASYNC_BLOCK_CIPHER],
+[AC_MSG_CHECKING([if kernel has block cipher support])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/crypto.h>
+],[
+ int v = CRYPTO_ALG_TYPE_BLKCIPHER;
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_ASYNC_BLOCK_CIPHER, 1, [kernel has block cipher support])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
#
# LC_PROG_LINUX
# Lustre linux kernel checks
#
AC_DEFUN([LC_PROG_LINUX],
-[ LC_LUSTRE_VERSION_H
-if test x$enable_server = xyes ; then
- LC_CONFIG_BACKINGFS
-fi
-LC_CONFIG_PINGER
-LC_CONFIG_CHECKSUM
-LC_CONFIG_LIBLUSTRE_RECOVERY
-LC_CONFIG_QUOTA
-LC_CONFIG_HEALTH_CHECK_WRITE
-LC_CONFIG_LRU_RESIZE
-
-
-LC_TASK_PPTR
-# RHEL4 patches
-LC_EXPORT_TRUNCATE_COMPLETE
-LC_EXPORT_D_REHASH_COND
-LC_EXPORT___D_REHASH
-LC_EXPORT_NODE_TO_CPUMASK
-
-LC_STRUCT_KIOBUF
-LC_FUNC_COND_RESCHED
-LC_FUNC_ZAP_PAGE_RANGE
-LC_FUNC_PDE
-LC_FUNC_DIRECT_IO
-LC_HEADER_MM_INLINE
-LC_STRUCT_INODE
-LC_FUNC_REGISTER_CACHE
-LC_FUNC_GRAB_CACHE_PAGE_NOWAIT_GFP
-LC_FUNC_DEV_SET_RDONLY
-LC_FUNC_FILEMAP_FDATAWRITE
-LC_STRUCT_STATFS
-LC_FUNC_PAGE_MAPPED
-LC_STRUCT_FILE_OPS_UNLOCKED_IOCTL
-LC_FILEMAP_POPULATE
-LC_D_ADD_UNIQUE
-LC_BIT_SPINLOCK_H
-
-LC_XATTR_ACL
-LC_POSIX_ACL_XATTR_H
-LC_CONST_ACL_SIZE
-
-LC_STRUCT_INTENT_FILE
-
-LC_FUNC_SET_FS_PWD
-LC_CAPA_CRYPTO
-LC_CONFIG_GSS
-LC_FUNC_MS_FLOCK_LOCK
-LC_FUNC_HAVE_CAN_SLEEP_ARG
-LC_FUNC_F_OP_FLOCK
-LC_QUOTA_READ
-LC_COOKIE_FOLLOW_LINK
-LC_FUNC_RCU
-
-# does the kernel have VFS intent patches?
-LC_VFS_INTENT_PATCHES
-
-# ~2.6.11
-LC_S_TIME_GRAN
-LC_SB_TIME_GRAN
-
-# 2.6.12
-LC_RW_TREE_LOCK
-
-# 2.6.15
-LC_INODE_I_MUTEX
-
-# 2.6.17
-LC_DQUOTOFF_MUTEX
-
-# 2.6.18
-LC_NR_PAGECACHE
-LC_STATFS_DENTRY_PARAM
-LC_VFS_KERN_MOUNT
-LC_INVALIDATEPAGE_RETURN_INT
-LC_UMOUNTBEGIN_HAS_VFSMOUNT
-
-#2.6.18 + RHEL5 (fc6)
-LC_PG_FS_MISC
-
-# 2.6.19
-LC_INODE_BLKSIZE
-LC_VFS_READDIR_U64_INO
-LC_GENERIC_FILE_READ
-LC_GENERIC_FILE_WRITE
-
-# 2.6.20
-LC_CANCEL_DIRTY_PAGE
-
-# raid5-zerocopy patch
-LC_PAGE_CONSTANT
+ [LC_LUSTRE_VERSION_H
+ if test x$enable_server = xyes ; then
+ AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])
+ LC_CONFIG_BACKINGFS
+ fi
+ LC_CONFIG_PINGER
+ LC_CONFIG_CHECKSUM
+ LC_CONFIG_LIBLUSTRE_RECOVERY
+ LC_CONFIG_QUOTA
+ LC_CONFIG_HEALTH_CHECK_WRITE
+ LC_CONFIG_LRU_RESIZE
+
+ LC_TASK_PPTR
+ # RHEL4 patches
+ LC_EXPORT_TRUNCATE_COMPLETE
+ LC_EXPORT_D_REHASH_COND
+ LC_EXPORT___D_REHASH
+ LC_EXPORT_D_MOVE_LOCKED
+ LC_EXPORT___D_MOVE
+ LC_EXPORT_NODE_TO_CPUMASK
+
+ LC_STRUCT_KIOBUF
+ LC_FUNC_COND_RESCHED
+ LC_FUNC_ZAP_PAGE_RANGE
+ LC_FUNC_PDE
+ LC_FUNC_DIRECT_IO
+ LC_HEADER_MM_INLINE
+ LC_STRUCT_INODE
+ LC_FUNC_REGISTER_CACHE
+ LC_FUNC_GRAB_CACHE_PAGE_NOWAIT_GFP
+ LC_FUNC_DEV_SET_RDONLY
+ LC_FUNC_FILEMAP_FDATAWRITE
+ LC_STRUCT_STATFS
+ LC_FUNC_PAGE_MAPPED
+ LC_STRUCT_FILE_OPS_UNLOCKED_IOCTL
+ LC_FILEMAP_POPULATE
+ LC_D_ADD_UNIQUE
+ LC_BIT_SPINLOCK_H
+
+ LC_XATTR_ACL
+ LC_POSIX_ACL_XATTR_H
+ LC_CONST_ACL_SIZE
+
+ LC_STRUCT_INTENT_FILE
+
+ LC_FUNC_SET_FS_PWD
+ LC_CAPA_CRYPTO
+ LC_CONFIG_GSS
+ LC_FUNC_MS_FLOCK_LOCK
+ LC_FUNC_HAVE_CAN_SLEEP_ARG
+ LC_FUNC_F_OP_FLOCK
+ LC_QUOTA_READ
+ LC_COOKIE_FOLLOW_LINK
+ LC_FUNC_RCU
+
+ # does the kernel have VFS intent patches?
+ LC_VFS_INTENT_PATCHES
+
+ # ~2.6.11
+ LC_S_TIME_GRAN
+ LC_SB_TIME_GRAN
+
+ # 2.6.12
+ LC_RW_TREE_LOCK
+
+ # 2.6.15
+ LC_INODE_I_MUTEX
+
+ # SLES 10 (at least)
+ LC_SYMVERFILE
+
+ # 2.6.17
+ LC_DQUOTOFF_MUTEX
+
+ # 2.6.18
+ LC_NR_PAGECACHE
+ LC_STATFS_DENTRY_PARAM
+ LC_VFS_KERN_MOUNT
+ LC_INVALIDATEPAGE_RETURN_INT
+ LC_UMOUNTBEGIN_HAS_VFSMOUNT
+
+ #2.6.18 + RHEL5 (fc6)
+ LC_PG_FS_MISC
+ LC_PAGE_CHECKED
+
+ # 2.6.19
+ LC_INODE_BLKSIZE
+ LC_VFS_READDIR_U64_INO
+ LC_GENERIC_FILE_READ
+ LC_GENERIC_FILE_WRITE
+
+ # 2.6.20
+ LC_CANCEL_DIRTY_PAGE
+
+ # raid5-zerocopy patch
+ LC_PAGE_CONSTANT
+
+ # 2.6.22
+ LC_INVALIDATE_BDEV_2ARG
+ LC_ASYNC_BLOCK_CIPHER
+ # 2.6.23
+ LC_UNREGISTER_BLKDEV_RETURN_INT
+ LC_KERNEL_SPLICE_READ
+ LC_HAVE_EXPORTFS_H
+ LC_EXPORT_NR_FREE_BUFFER_PAGES
])
#
fi
AC_MSG_RESULT([$enable_liblustre_tests])
+AC_MSG_CHECKING([whether to enable liblustre acl])
+AC_ARG_ENABLE([liblustre-acl],
+ AC_HELP_STRING([--disable-liblustre-acl],
+ [disable ACL support for liblustre]),
+ [],[enable_liblustre_acl=yes])
+if test x$enable_liblustre != xyes ; then
+ enable_liblustre_acl='no'
+fi
+AC_MSG_RESULT([$enable_liblustre_acl])
+if test x$enable_liblustre_acl != xno ; then
+ AC_DEFINE(LIBLUSTRE_POSIX_ACL, 1, Liblustre Support ACL-enabled MDS)
+fi
+
AC_MSG_CHECKING([whether to build mpitests])
AC_ARG_ENABLE([mpitests],
AC_HELP_STRING([--enable-mpitests],
# include/lustre/lustre_user.h
# See note there re: __ASM_X86_64_PROCESSOR_H
-AC_CHECK_HEADERS([linux/quota.h])
+AC_CHECK_HEADERS([linux/fs.h linux/quota.h])
# liblustre/llite_lib.h
AC_CHECK_HEADERS([xtio.h file.h])
# utils/llverfs.c
AC_CHECK_HEADERS([ext2fs/ext2fs.h])
+# check for -lz support
+ZLIB=""
+AC_CHECK_LIB([z],
+ [adler32],
+ [AC_CHECK_HEADERS([zlib.h],
+ [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_SUBST(ZLIB)
+
# Super safe df
AC_ARG_ENABLE([mindf],
AC_HELP_STRING([--enable-mindf],
lustre/include/lustre_ver.h
lustre/include/linux/Makefile
lustre/include/lustre/Makefile
-lustre/kernel_patches/targets/2.6-suse.target
lustre/kernel_patches/targets/2.6-vanilla.target
lustre/kernel_patches/targets/2.6-rhel4.target
lustre/kernel_patches/targets/2.6-rhel5.target