Whamcloud - gitweb
fix building problem with 2.6.22 kernel.
[fs/lustre-release.git] / lnet / autoconf / lustre-lnet.m4
index 30eda45..434cb1b 100644 (file)
@@ -536,6 +536,7 @@ else
        EXTRA_LNET_INCLUDE="$O2IBCPPFLAGS $EXTRA_LNET_INCLUDE"
        LB_LINUX_TRY_COMPILE([
                #include <linux/version.h>
+               #include <linux/pci.h>
                #if !HAVE_GFP_T
                typedef int gfp_t;
                #endif
@@ -568,11 +569,19 @@ else
                O2IBCPPFLAGS=""
        ])
 
+# version checking is a hack and isn't reliable, we need verify it
+# with each new ofed release
+
        IB_DMA_MAP="`grep -c ib_dma_map_single ${O2IBPATH}/include/rdma/ib_verbs.h`"
        if test "$IB_DMA_MAP" != 0 ; then
-               IBLND_OFED_VERSION="102"
+               IB_COMP_VECT="`grep -c comp_vector ${O2IBPATH}/include/rdma/ib_verbs.h`"
+               if test "$IB_COMP_VECT" != 0 ; then
+                       IBLND_OFED_VERSION="1025"
+               else
+                       IBLND_OFED_VERSION="1020"
+               fi
        else
-               IBLND_OFED_VERSION="101"
+               IBLND_OFED_VERSION="1010"
        fi
 
         AC_DEFINE_UNQUOTED(IBLND_OFED_VERSION, $IBLND_OFED_VERSION,
@@ -1031,35 +1040,22 @@ LB_LINUX_TRY_COMPILE([
 # we export show_task(), but not all kernels have it (yet)
 #
 AC_DEFUN([LN_FUNC_SHOW_TASK],
-[AC_MSG_CHECKING([if kernel exports show_task])
-have_show_task=0
-for file in ksyms sched ; do
-       if grep -q "EXPORT_SYMBOL(show_task)" \
-                "$LINUX/kernel/$file.c" 2>/dev/null ; then
-               have_show_task=1
-               break
-       fi
-done
-if test x$have_show_task = x1 ; then
-       AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported])
-       AC_MSG_RESULT([yes])
-else
-       AC_MSG_RESULT([no])
-fi
+[LB_CHECK_SYMBOL_EXPORT([show_task],
+[kernel/ksyms.c kernel/sched.c],[
+AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported])
+],[
+])
 ])
 
 # LN_TASKLIST_LOCK
 # 2.6.18 remove tasklist_lock export
 AC_DEFUN([LN_TASKLIST_LOCK],
-[AC_MSG_CHECKING([kernel export tasklist_lock])
-        if grep -q "EXPORT_SYMBOL(tasklist_lock)" \
-                 "$LINUX/kernel/fork.c" 2>/dev/null ; then
-                AC_DEFINE(HAVE_TASKLIST_LOCK, 1,
-                          [tasklist_lock exported])
-                AC_MSG_RESULT([yes])
-        else
-                AC_MSG_RESULT([no])
-        fi
+[LB_CHECK_SYMBOL_EXPORT([tasklist_lock],
+[kernel/fork.c],[
+AC_DEFINE(HAVE_TASKLIST_LOCK, 1,
+         [tasklist_lock exported])
+],[
+])
 ])
 
 # 2.6.19 API changes
@@ -1144,7 +1140,7 @@ EXTRA_KCFLAGS="-Werror"
 LB_LINUX_TRY_COMPILE([
         #include <linux/slab.h>
 ],[
-       struct kmem_cache_s *cachep = NULL;
+       kmem_cache_t *cachep = NULL;
        
        kmem_cache_free(cachep, NULL);
 
@@ -1157,6 +1153,22 @@ LB_LINUX_TRY_COMPILE([
 ])
 EXTRA_KCFLAGS="$tmp_flags"
 ])
+# 2.6.23 lost dtor argument
+AC_DEFUN([LN_KMEM_CACHE_CREATE_DTOR],
+[AC_MSG_CHECKING([check kmem_cache_create has dtor argument])
+LB_LINUX_TRY_COMPILE([
+        #include <linux/slab.h>
+],[
+        struct kmem_cache_s *cachep = NULL;
+       kmem_cache_create(NULL, 0, 0, 0, NULL, NULL);
+],[
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(HAVE_KMEM_CACHE_CREATE_DTOR, 1,
+                  [kmem_cache_create has dtor argument])
+],[
+        AC_MSG_RESULT(NO)
+])
+])
 
 #
 # LN_PROG_LINUX
@@ -1195,6 +1207,8 @@ LN_3ARGS_INIT_WORK
 # 2.6.21
 LN_2ARGS_REGISTER_SYSCTL
 LN_KMEM_CACHE_S
+# 2.6.23
+LN_KMEM_CACHE_CREATE_DTOR
 ])
 
 #
@@ -1431,6 +1445,8 @@ lnet/libcfs/autoMakefile
 lnet/libcfs/linux/Makefile
 lnet/lnet/Makefile
 lnet/lnet/autoMakefile
+lnet/selftest/Makefile
+lnet/selftest/autoMakefile
 lnet/ulnds/Makefile
 lnet/ulnds/autoMakefile
 lnet/ulnds/socklnd/Makefile