Whamcloud - gitweb
LU-2800 autoconf: remove LC_BI_HW_SEGMENTS test
[fs/lustre-release.git] / lustre / autoconf / lustre-core.m4
index c6e5e29..620963c 100644 (file)
@@ -262,25 +262,35 @@ 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
 ])
 
@@ -292,7 +302,7 @@ AC_DEFUN([LC_CONFIG_SUNRPC],
 ])
 
 #
-# 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,64 +316,44 @@ 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)
+       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
 
-# raid5-zerocopy patch
+       if test x$gss_conf_test == xsuccess; then
+               AC_DEFINE([HAVE_GSS], [1], [Define this is if you enable gss])
+               enable_gss='yes'
+       fi
 
-#
-# 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 <linux/mm.h>
-        #include <linux/page-flags.h>
-],[
-        #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);
-])
+ fi
 ])
 
 # 2.6.24
@@ -428,42 +418,6 @@ 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 <linux/fs.h>
-        #include <linux/quota.h>
-],[
-        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])
-LB_LINUX_TRY_COMPILE([
-        #include <linux/fs.h>
-        #include <linux/quota.h>
-],[
-        struct quotactl_ops *qop = NULL;
-        qop->quota_off(NULL, 0, 0);
-],[
-        AC_DEFINE(HAVE_QUOTA_OFF_3ARGS, 1,
-                [quota_off needs 3 paramters])
-        AC_MSG_RESULT([yes])
-],[
-        AC_MSG_RESULT([no])
-])
-])
-
 # 2.6.34 has quotactl_ops->[sg]et_dqblk that take struct fs_disk_quota
 AC_DEFUN([LC_HAVE_DQUOT_FS_DISK_QUOTA],
 tmp_flags="$EXTRA_KCFLAGS"
@@ -500,25 +454,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 <linux/bio.h>
-],[
-        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
@@ -769,28 +704,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 <linux/fs.h>
-        #include <linux/quota.h>
-],[
-        ((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],
@@ -1389,19 +1302,11 @@ AC_DEFUN([LC_PROG_LINUX],
          LC_CONFIG_RMTCLIENT
          LC_CONFIG_GSS
 
-         # raid5-zerocopy patch
-         LC_PAGE_CONSTANT
-
          # 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
@@ -1426,7 +1331,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
@@ -1859,6 +1763,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