#
AC_DEFUN([LC_CONFIG_SRCDIR],
[AC_CONFIG_SRCDIR([lustre/obdclass/obdo.c])
+libcfs_is_module=yes
])
-
+
#
# 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
AC_DEFUN([LC_DQUOTOFF_MUTEX],
])
])
+# 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
# to the appropriate function and that's what we use.
AC_DEFUN([LC_EXPORT_NODE_TO_CPUMASK],
- [LB_LINUX_ARCH
- LB_CHECK_SYMBOL_EXPORT([node_to_cpumask],
+ [LB_CHECK_SYMBOL_EXPORT([node_to_cpumask],
[arch/$LINUX_ARCH/mm/numa.c],
[AC_DEFINE(HAVE_NODE_TO_CPUMASK, 1,
[node_to_cpumask is exported by
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])
+])
+])
+
+#
+# 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 <linux/fs.h>
+],[
+ int 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])
+])
+])
#
# LC_PROG_LINUX
AC_DEFUN([LC_PROG_LINUX],
[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_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
# 2.6.15
LC_INODE_I_MUTEX
- # SLES 10 (at least)
- LC_SYMVERFILE
-
# 2.6.17
LC_DQUOTOFF_MUTEX
#2.6.18 + RHEL5 (fc6)
LC_PG_FS_MISC
+ LC_PAGE_CHECKED
# 2.6.19
LC_INODE_BLKSIZE
# 2.6.22
LC_INVALIDATE_BDEV_2ARG
+ LC_ASYNC_BLOCK_CIPHER
+ LC_FS_RENAME_DOES_D_MOVE
# 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])
+AC_MSG_RESULT([$enable_liblustre_acl])
+if test x$enable_liblustre_acl = xyes ; 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],
# libsysio/src/readlink.c
LC_READLINK_SSIZE_T
+# lvfs/prng.c - depends on linux/types.h from liblustre/dir.c
+AC_CHECK_HEADERS([linux/random.h], [], [],
+ [#ifdef HAVE_LINUX_TYPES_H
+ # include <linux/types.h>
+ #endif
+ ])
+
# 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