Whamcloud - gitweb
LU-15122 osd-ldiskfs: Fix ASSERTION( iobuf->dr_rw == 0 ) with 64KB PAGE_SIZE
[fs/lustre-release.git] / config / lustre-build-zfs.m4
index 80dfcff..27b0c0f 100644 (file)
@@ -169,14 +169,17 @@ AC_DEFUN([LB_SPL], [
                AC_MSG_RESULT([$splsym])
        ])
 
-       SPL=${splsrc}
-       SPL_OBJ=${splobj}
-       SPL_VERSION=${splver}
-
-       AC_SUBST(SPL)
-       AC_SUBST(SPL_OBJ)
-       AC_SUBST(SPL_VERSION)
-       AC_SUBST(EXTRA_SYMBOLS)
+       AS_IF([test x$enable_zfs = xyes], [
+               SPL=${splsrc}
+               SPL_OBJ=${splobj}
+               SPL_VERSION=${splver}
+
+               AC_SUBST(SPL)
+               AC_SUBST(SPL_OBJ)
+               AC_SUBST(SPL_VERSION)
+               AC_SUBST(EXTRA_SYMBOLS)
+       ])
+
 ])
 
 AC_DEFUN([LB_ZFS], [
@@ -287,14 +290,17 @@ AC_DEFUN([LB_ZFS], [
                AC_MSG_RESULT([$zfssym])
        ])
 
-       ZFS=${zfssrc}
-       ZFS_OBJ=${zfsobj}
-       ZFS_VERSION=${zfsver}
+       AS_IF([test x$enable_zfs = xyes], [
+               ZFS=${zfssrc}
+               ZFS_OBJ=${zfsobj}
+               ZFS_VERSION=${zfsver}
+
+               AC_SUBST(ZFS)
+               AC_SUBST(ZFS_OBJ)
+               AC_SUBST(ZFS_VERSION)
+               AC_SUBST(EXTRA_SYMBOLS)
+       ])
 
-       AC_SUBST(ZFS)
-       AC_SUBST(ZFS_OBJ)
-       AC_SUBST(ZFS_VERSION)
-       AC_SUBST(EXTRA_SYMBOLS)
 ])
 
 AC_DEFUN([LB_ZFS_DEVEL], [
@@ -322,8 +328,8 @@ AC_DEFUN([LB_ZFS_USER], [
        AC_MSG_CHECKING([zfs devel headers])
        AS_IF([test -z "${zfsinc}"], [
                AS_IF([test -e "${zfssrc}/include/libzfs.h" && test -e "${zfssrc}/lib/libspl/include"], [
-                       zfsinc="-I $zfssrc/lib/libspl/include -I $zfssrc/include"
-                       zfslib="-L$zfssrc/lib/libzfs/.libs/ -L$zfssrc/lib/libnvpair/.libs"
+                       zfsinc="-I $zfssrc/lib/libspl/include -I $zfssrc/lib/libspl/include/os/linux -I $zfssrc/include"
+                       zfslib="-L$zfssrc/lib/libzfs/.libs/ -L$zfssrc/lib/libnvpair/.libs/ -L$zfssrc/lib/libzpool/.libs/"
                ], [test -d /usr/include/libzfs && test -d /usr/include/libspl], [
                        zfsinc="-I/usr/include/libspl -I /usr/include/libzfs"
                        zfslib=""
@@ -337,7 +343,7 @@ AC_DEFUN([LB_ZFS_USER], [
 
        ZFS_LIBZFS_INCLUDE=${zfsinc}
        ZFS_LIBZFS_LDFLAGS=${zfslib}
-       ZFS_LIBZFS_LIBS="-lzfs -lnvpair"
+       ZFS_LIBZFS_LIBS="-lzfs -lnvpair -lzpool"
        AC_SUBST(ZFS_LIBZFS_INCLUDE)
        AC_SUBST(ZFS_LIBZFS_LDFLAGS)
        AC_SUBST(ZFS_LIBZFS_LIBS)
@@ -400,7 +406,8 @@ AC_DEFUN([LB_CONFIG_ZFS], [
                dnl #
                dnl # SPL is only needed if ZFS is prior to 0.8.0
                dnl #
-               AS_IF([test x$enable_modules = xyes && test $ZFS_MAJOR -eq 0 && test $ZFS_MINOR -lt 8], [
+               AS_IF([test x$enable_modules = xyes && test -n "$ZFS_MAJOR" &&
+                           test $ZFS_MAJOR -eq 0 && test $ZFS_MINOR -lt 8], [
                        LB_SPL
                ],[
                        enable_spl=no
@@ -548,15 +555,24 @@ your distribution.
                dnl #
                dnl # ZFS 0.7.0 feature: MULTIHOST
                dnl #
-               LB_CHECK_COMPILE([if ZFS has multihost protection],
-               spa_multihost, [
-                       #include <sys/spa.h>
-               ],[
+               restore_CFLAGS=$CFLAGS
+               CFLAGS="$CFLAGS $ZFS_LIBZFS_INCLUDE -Werror"
+               AC_MSG_CHECKING([[if ZFS has multihost protection]])
+               AC_COMPILE_IFELSE([
+                 AC_LANG_PROGRAM(
+                 [[
+                   #define _LARGEFILE64_SOURCE 1
+                   #include <sys/sysmacros.h>
+                   #include <sys/spa.h>
+                 ]], [[
                        spa_multihost(NULL);
-               ],[
-                       AC_DEFINE(HAVE_ZFS_MULTIHOST, 1,
-                               [Have multihost protection in ZFS])
-               ])
+                 ]])
+                 ],[
+                 AC_DEFINE(HAVE_ZFS_MULTIHOST, 1,
+                       [Have multihost protection in ZFS])
+                 spa_multihost_fn="yes"],[spa_multihost_fn="no"]),
+               AC_MSG_RESULT([$spa_multihost_fn])
+               CFLAGS=$restore_CFLAGS
                dnl #
                dnl # ZFS 0.7.x adds new method zap_lookup_by_dnode
                dnl #
@@ -682,11 +698,14 @@ your distribution.
                                [Have inode_timespec_t])
                ])
                dnl # ZFS 0.7.12/0.8.x uses zfs_refcount_add() instead of
-               dnl # refcount_add().
+               dnl # refcount_add().  ZFS 2.0 renamed sys/refcount.h to
+               dnl # sys/zfs_refcount.h, rather the add another check to
+               dnl # determine the correct header name include it
+               dnl # indirectly through sys/dnode.h.
                dnl #
                LB_CHECK_COMPILE([if ZFS has 'zfs_refcount_add'],
                zfs_refcount_add, [
-                       #include <sys/refcount.h>
+                       #include <sys/dnode.h>
                ],[
                        zfs_refcount_add((zfs_refcount_t *) NULL, NULL);
                ],[
@@ -720,6 +739,34 @@ your distribution.
                        AC_DEFINE(HAVE_DMU_OBJSET_DISOWN_3ARG, 1,
                                [Have dmu_objset_disown() with 3 args])
                ])
+               dnl #
+               dnl # ZFS exports dmu_offet_next
+               dnl #
+               AC_CACHE_CHECK([if ZFS exports 'dmu_offset_next'],
+               [lb_cv_dmu_offset_next], [
+               lb_cv_dmu_offset_next="no"
+               AS_IF([grep -q -E "EXPORT_SYMBOL.*\(dmu_offset_next\)" "$zfssrc/module/zfs/dmu.c" 2>/dev/null],
+                       [lb_cv_dmu_offset_next="yes"])
+               ])
+               AS_IF([test "x$lb_cv_dmu_offset_next" = "xyes"], [
+                       AC_DEFINE(HAVE_DMU_OFFSET_NEXT, 1,
+                               [Have dmu_offset_next() exported])
+               ])
+               dnl #
+               dnl # ZFS 2.0 replaced .db_last_dirty / .dr_next with a list_t
+               dnl # and list_node_t named .db_dirty_records / .dr_dbuf_node.
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'db_dirty_records' list_t],
+               db_dirty_records, [
+                       #include <sys/dbuf.h>
+               ],[
+                       dmu_buf_impl_t db;
+                       dbuf_dirty_record_t *dr;
+                       dr = list_head(&db.db_dirty_records);
+               ],[
+                       AC_DEFINE(HAVE_DB_DIRTY_RECORDS_LIST, 1,
+                               [Have db_dirty_records list_t])
+               ])
        ])
 
        AS_IF([test "x$enable_zfs" = xyes], [