Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / lustre / autoconf / lustre-core.m4
index 23fa733..7a628c0 100644 (file)
@@ -8,7 +8,7 @@
 AC_DEFUN([LC_CONFIG_SRCDIR],
 [AC_CONFIG_SRCDIR([lustre/obdclass/obdo.c])
 ])
-                           
+
 #
 # LC_PATH_DEFAULTS
 #
@@ -598,6 +598,21 @@ AC_DEFUN([LC_EXPORT___IGET],
 ])
 ])
 
+#
+# 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],[
@@ -636,6 +651,27 @@ LB_LINUX_CONFIG_IM([CRYPTO_SHA1],[],[
 ])
 ])
 
+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)
 #
@@ -676,18 +712,26 @@ AC_DEFUN([LC_CONFIG_GSS],
 
  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
@@ -696,7 +740,9 @@ AC_DEFUN([LC_CONFIG_GSS],
 
        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)
 
@@ -817,6 +863,7 @@ AC_DEFUN([LC_INODE_I_MUTEX],
 LB_LINUX_TRY_COMPILE([
        #include <linux/mutex.h>
        #include <linux/fs.h>
+       #undef i_mutex
 ],[
        struct inode i;
 
@@ -1113,6 +1160,27 @@ LB_LINUX_TRY_COMPILE([
 ])
 ])
 
+# 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],[
@@ -1140,6 +1208,24 @@ AC_DEFINE(HAVE___D_REHASH, 1,
 ])
 ])
 
+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
@@ -1163,6 +1249,65 @@ AC_DEFUN([LC_EXPORT_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
 #
@@ -1242,10 +1387,12 @@ EXTRA_KCFLAGS="$tmp_flags"
 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
 
@@ -1282,6 +1429,23 @@ int main(void)
 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
@@ -1291,6 +1455,7 @@ CFLAGS="$tmp_flags"
 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
@@ -1305,6 +1470,8 @@ AC_DEFUN([LC_PROG_LINUX],
          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
@@ -1369,6 +1536,7 @@ AC_DEFUN([LC_PROG_LINUX],
 
          #2.6.18 + RHEL5 (fc6)
          LC_PG_FS_MISC
+         LC_PAGE_CHECKED
 
          # 2.6.19
          LC_INODE_BLKSIZE
@@ -1380,7 +1548,17 @@ AC_DEFUN([LC_PROG_LINUX],
          LC_CANCEL_DIRTY_PAGE
 
          # raid5-zerocopy patch
-         LC_PAGE_CONSTANT])
+         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
+])
 
 #
 # LC_CONFIG_CLIENT_SERVER
@@ -1427,6 +1605,19 @@ if test x$enable_liblustre != xyes ; then
 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],
@@ -1591,6 +1782,20 @@ LC_READLINK_SSIZE_T
 # 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],
@@ -1650,7 +1855,6 @@ lustre/include/Makefile
 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