Whamcloud - gitweb
LU-12017 ldlm: DoM truncate deadlock
[fs/lustre-release.git] / config / lustre-build-zfs.m4
index 6debc60..54d788f 100644 (file)
@@ -15,8 +15,8 @@ dnl #
 dnl #                       * /var/lib/dkms/zfs/${VERSION}/source
 dnl #                       * /usr/src/zfs-${VERSION}/${LINUXRELEASE}
 dnl #                       * /usr/src/zfs-${VERSION}
-dnl #                       * ../spl/
-dnl #                       * $LINUX
+dnl #                       * ../zfs/
+dnl #                       * $LINUX/zfs
 dnl #
 dnl # --with-zfs-devel=path
 dnl #                 - User provided directory where zfs development headers
@@ -46,7 +46,7 @@ dnl #                   * /var/lib/dkms/spl/${VERSION}/source
 dnl #                   * /usr/src/spl-${VERSION}/${LINUXRELEASE}
 dnl #                   * /usr/src/spl-${VERSION}
 dnl #                   * ../spl/
-dnl #                   * $LINUX
+dnl #                   * $LINUX/spl
 dnl #
 dnl # --with-spl=path - Enable spl support and use the spl headers in the
 dnl #                   provided path.  No autodetection is performed.
@@ -76,7 +76,7 @@ AC_DEFUN([LB_SPL], [
        splsrc1="/usr/src/spl-${splver}/${LINUXRELEASE}"
        splsrc2="/usr/src/spl-${splver}"
        splsrc3="../spl/"
-       splsrc4="$LINUX"
+       splsrc4="$LINUX/spl"
 
        AC_MSG_CHECKING([spl source directory])
        AS_IF([test -z "${splsrc}"], [
@@ -194,7 +194,7 @@ AC_DEFUN([LB_ZFS], [
        zfssrc1="/usr/src/zfs-${zfsver}/${LINUXRELEASE}"
        zfssrc2="/usr/src/zfs-${zfsver}"
        zfssrc3="../zfs/"
-       zfssrc4="$LINUX"
+       zfssrc4="$LINUX/zfs"
 
        AC_MSG_CHECKING([zfs source directory])
        AS_IF([test -z "${zfssrc}"], [
@@ -336,9 +336,11 @@ AC_DEFUN([LB_ZFS_USER], [
        AC_MSG_RESULT([$zfsinc])
 
        ZFS_LIBZFS_INCLUDE=${zfsinc}
-       ZFS_LIBZFS_LDFLAGS="-lzfs -lnvpair ${zfslib}"
+       ZFS_LIBZFS_LDFLAGS=${zfslib}
+       ZFS_LIBZFS_LIBS="-lzfs -lnvpair"
        AC_SUBST(ZFS_LIBZFS_INCLUDE)
        AC_SUBST(ZFS_LIBZFS_LDFLAGS)
+       AC_SUBST(ZFS_LIBZFS_LIBS)
 ])
 
 AC_DEFUN([LB_CONFIG_ZFS], [
@@ -522,15 +524,28 @@ your distribution.
                dnl #
                dnl # ZFS 0.7.0 feature: SPA_FEATURE_USEROBJ_ACCOUNTING
                dnl #
-               LB_CHECK_COMPILE([if zfs has native dnode accounting supported],
-               dmu_objset_id_quota_upgrade, [
+               LB_CHECK_COMPILE([if ZFS has native dnode accounting supported],
+               dmu_objset_userobjused_enabled, [
                        #include <sys/dmu_objset.h>
                ],[
-                       dmu_objset_id_quota_upgrade(NULL);
+                       dmu_objset_userobjused_enabled(NULL);
                ],[
                        AC_DEFINE(HAVE_DMU_USEROBJ_ACCOUNTING, 1,
                                [Have native dnode accounting in ZFS])
                ])
+               dnl #
+               dnl # ZFS 0.7.0 feature: MULTIHOST
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has multihost protection],
+               spa_multihost, [
+                       #include <sys/spa.h>
+               ],[
+                       spa_multihost(NULL);
+               ],[
+                       AC_DEFINE(HAVE_ZFS_MULTIHOST, 1,
+                               [Have multihost protection in ZFS])
+               ])
+               dnl #
                dnl # ZFS 0.7.x adds new method zap_lookup_by_dnode
                dnl #
                LB_CHECK_COMPILE([if ZFS has 'zap_lookup_by_dnode'],
@@ -629,6 +644,44 @@ your distribution.
                                [Have dmu_read_by_dnode() in ZFS])
                ])
                dnl #
+               dnl # ZFS 0.7.2 adds new method dmu_tx_mark_netfree
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'dmu_tx_mark_netfree'],
+               dmu_tx_mark_netfree, [
+                       #include <sys/dmu.h>
+               ],[
+                       dmu_tx_t *tx = NULL;
+                       dmu_tx_mark_netfree(tx);
+               ],[
+                       AC_DEFINE(HAVE_DMU_TX_MARK_NETFREE, 1,
+                               [Have dmu_tx_mark_netfree])
+               ])
+               dnl #
+               dnl # ZFS 0.7.10 changes timestruc_t to inode_timespec_t
+               dnl #
+               LB_CHECK_COMPILE([if SPL has 'inode_timespec_t'],
+               zfs_have_inode_timespec, [
+                       #include <sys/fs/zfs.h>
+               ],[
+                       inode_timespec_t now;
+                       gethrestime(&now);
+               ],[
+                       AC_DEFINE(HAVE_ZFS_INODE_TIMESPEC, 1,
+                               [Have inode_timespec_t])
+               ])
+               dnl # ZFS 0.7.12/0.8.x uses zfs_refcount_add() instead of
+               dnl # refcount_add().
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'zfs_refcount_add'],
+               zfs_refcount_add, [
+                       #include <sys/refcount.h>
+               ],[
+                       zfs_refcount_add((zfs_refcount_t *) NULL, NULL);
+               ],[
+                       AC_DEFINE(HAVE_ZFS_REFCOUNT_ADD, 1,
+                               [Have zfs_refcount_add])
+               ])
+               dnl #
                dnl # ZFS 0.8.x changes dmu_objset_own for encryption
                dnl #
                LB_CHECK_COMPILE([if ZFS has 'dmu_objset_own' with 6 args],
@@ -637,7 +690,7 @@ your distribution.
                ],[
                        objset_t *os = NULL;
                        dmu_objset_type_t type = DMU_OST_ANY;
-                       dmu_objset_own(NULL, type, B_FALSE, B_FALSE, FTAG, &os);
+                       dmu_objset_own(NULL, type, B_FALSE, B_TRUE, FTAG, &os);
                ],[
                        AC_DEFINE(HAVE_DMU_OBJSET_OWN_6ARG, 1,
                                [Have dmu_objset_own() with 6 args])
@@ -650,24 +703,11 @@ your distribution.
                        #include <sys/dmu_objset.h>
                ],[
                        objset_t *os = NULL;
-                       dmu_objset_disown(os, B_FALSE, FTAG);
+                       dmu_objset_disown(os, B_TRUE, FTAG);
                ],[
                        AC_DEFINE(HAVE_DMU_OBJSET_DISOWN_3ARG, 1,
                                [Have dmu_objset_disown() with 3 args])
                ])
-               dnl #
-               dnl # ZFS 0.7.2 adds new method dmu_tx_mark_netfree
-               dnl #
-               LB_CHECK_COMPILE([if ZFS has 'dmu_tx_mark_netfree'],
-               dmu_tx_mark_netfree, [
-                       #include <sys/dmu.h>
-               ],[
-                       dmu_tx_t *tx = NULL;
-                       dmu_tx_mark_netfree(tx);
-               ],[
-                       AC_DEFINE(HAVE_DMU_TX_MARK_NETFREE, 1,
-                               [Have dmu_tx_mark_netfree])
-               ])
        ])
 
        AS_IF([test "x$enable_zfs" = xyes], [