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], [
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], [
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)
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
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 #
[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);
],[
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], [