Whamcloud - gitweb
LU-9564 build: Add server-build for Ubuntu with Kernel 4.4.0
[fs/lustre-release.git] / config / lustre-build-zfs.m4
index ded7085..f036d46 100644 (file)
@@ -336,7 +336,7 @@ AC_DEFUN([LB_ZFS_USER], [
        AC_MSG_RESULT([$zfsinc])
 
        ZFS_LIBZFS_INCLUDE=${zfsinc}
-       ZFS_LIBZFS_LDFLAGS="-lzfs ${zfslib}"
+       ZFS_LIBZFS_LDFLAGS="-lzfs -lnvpair ${zfslib}"
        AC_SUBST(ZFS_LIBZFS_INCLUDE)
        AC_SUBST(ZFS_LIBZFS_LDFLAGS)
 ])
@@ -406,6 +406,22 @@ your distribution.
                ])
        ])
 
+       dnl #
+       dnl # Define zfs source code version
+       dnl #
+       AS_IF([test x$enable_zfs = xyes], [
+               ZFS_MAJOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\1/'])
+               ZFS_MINOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\2/'])
+               ZFS_PATCH=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\3/'])
+               ZFS_FIX=$(echo $zfsver   | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\5/'])
+               AS_IF([test -z "$ZFS_FIX"], [ZFS_FIX="0"])
+
+               AC_DEFINE_UNQUOTED([ZFS_MAJOR], [$ZFS_MAJOR], [zfs major version])
+               AC_DEFINE_UNQUOTED([ZFS_MINOR], [$ZFS_MINOR], [zfs minor version])
+               AC_DEFINE_UNQUOTED([ZFS_PATCH], [$ZFS_PATCH], [zfs patch version])
+               AC_DEFINE_UNQUOTED([ZFS_FIX],   [$ZFS_FIX],   [zfs fix version])
+       ])
+
        AS_IF([test "x$enable_zfs" = xyes], [
                LB_CHECK_COMPILE([if zfs defines dsl_pool_config_enter/exit],
                dsl_pool_config_enter, [
@@ -507,15 +523,144 @@ your distribution.
                dnl # ZFS 0.7.0 feature: SPA_FEATURE_USEROBJ_ACCOUNTING
                dnl #
                LB_CHECK_COMPILE([if zfs has native dnode accounting supported],
-               dmu_objset_userobjspace_upgrade, [
+               dmu_objset_id_quota_upgrade, [
                        #include <sys/dmu_objset.h>
                ],[
-                       dmu_objset_userobjspace_upgrade(NULL);
+                       dmu_objset_id_quota_upgrade(NULL);
                ],[
                        AC_DEFINE(HAVE_DMU_USEROBJ_ACCOUNTING, 1,
                                [Have native dnode accounting in ZFS])
                ])
+               dnl # ZFS 0.7.x adds new method zap_lookup_by_dnode
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'zap_lookup_by_dnode'],
+               zap_lookup_by_dnode, [
+                       #include <sys/zap.h>
+                       #include <sys/dnode.h>
+               ],[
+                       dnode_t *dn = NULL;
+                       zap_lookup_by_dnode(dn, NULL, 1, 1, NULL);
+               ],[
+                       AC_DEFINE(HAVE_ZAP_LOOKUP_BY_DNODE, 1,
+                               [Have zap_lookup_by_dnode() in ZFS])
+               ])
+               dnl #
+               dnl # ZFS 0.7.x adds new method zap_add_by_dnode
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'zap_add_by_dnode'],
+               zap_add_by_dnode, [
+                       #include <sys/zap.h>
+                       #include <sys/dnode.h>
+               ],[
+                       dnode_t *dn = NULL;
+                       zap_add_by_dnode(dn, NULL, 1, 1, NULL, NULL);
+               ],[
+                       AC_DEFINE(HAVE_ZAP_ADD_BY_DNODE, 1,
+                               [Have zap_add_by_dnode() in ZFS])
+               ])
+               dnl #
+               dnl # ZFS 0.7.x adds new method zap_remove_by_dnode
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'zap_remove_by_dnode'],
+               zap_remove_by_dnode, [
+                       #include <sys/zap.h>
+                       #include <sys/dnode.h>
+               ],[
+                       dnode_t *dn = NULL;
+                       zap_remove_by_dnode(dn, NULL, NULL);
+               ],[
+                       AC_DEFINE(HAVE_ZAP_REMOVE_ADD_BY_DNODE, 1,
+                               [Have zap_remove_by_dnode() in ZFS])
+               ])
+               dnl #
+               dnl # ZFS 0.7.x adds new method dmu_tx_hold_zap_by_dnode
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'dmu_tx_hold_zap_by_dnode'],
+               dmu_tx_hold_zap_by_dnode, [
+                       #include <sys/zap.h>
+                       #include <sys/dnode.h>
+               ],[
+                       dnode_t *dn = NULL;
+                       dmu_tx_hold_zap_by_dnode(NULL, dn, TRUE, NULL);
+               ],[
+                       AC_DEFINE(HAVE_DMU_TX_HOLD_ZAP_BY_DNODE, 1,
+                               [Have dmu_tx_hold_zap_by_dnode() in ZFS])
+               ])
+               dnl #
+               dnl # ZFS 0.7.x adds new method dmu_tx_hold_write_by_dnode
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'dmu_tx_hold_write_by_dnode'],
+               dmu_tx_hold_write_by_dnode, [
+                       #include <sys/zap.h>
+                       #include <sys/dnode.h>
+               ],[
+                       dnode_t *dn = NULL;
+                       dmu_tx_hold_write_by_dnode(NULL, dn, 0, 0);
+               ],[
+                       AC_DEFINE(HAVE_DMU_TX_HOLD_WRITE_BY_DNODE, 1,
+                               [Have dmu_tx_hold_write_by_dnode() in ZFS])
+               ])
+               dnl #
+               dnl # ZFS 0.7.x adds new method dmu_write_by_dnode
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'dmu_write_by_dnode'],
+               dmu_write_by_dnode, [
+                       #include <sys/zap.h>
+                       #include <sys/dnode.h>
+               ],[
+                       dnode_t *dn = NULL;
+                       dmu_write_by_dnode(dn, 0, 0, NULL, NULL);
+               ],[
+                       AC_DEFINE(HAVE_DMU_WRITE_BY_DNODE, 1,
+                               [Have dmu_write_by_dnode() in ZFS])
+               ])
+               dnl #
+               dnl # ZFS 0.7.x adds new method dmu_read_by_dnode
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'dmu_read_by_dnode'],
+               dmu_read_by_dnode, [
+                       #include <sys/zap.h>
+                       #include <sys/dnode.h>
+               ],[
+                       dnode_t *dn = NULL;
+                       dmu_read_by_dnode(dn, 0, 0, NULL, 0);
+               ],[
+                       AC_DEFINE(HAVE_DMU_READ_BY_DNODE, 1,
+                               [Have dmu_read_by_dnode() in ZFS])
+               ])
+               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],
+               dmu_objset_own, [
+                       #include <sys/dmu_objset.h>
+               ],[
+                       objset_t *os = NULL;
+                       dmu_objset_type_t type = DMU_OST_ANY;
+                       dmu_objset_own(NULL, type, B_FALSE, B_FALSE, FTAG, &os);
+               ],[
+                       AC_DEFINE(HAVE_DMU_OBJSET_OWN_6ARG, 1,
+                               [Have dmu_objset_own() with 6 args])
+               ])
+               dnl #
+               dnl # ZFS 0.8.x changes dmu_objset_disown for encryption
+               dnl #
+               LB_CHECK_COMPILE([if ZFS has 'dmu_objset_disown' with 3 args],
+               dmu_objset_disown, [
+                       #include <sys/dmu_objset.h>
+               ],[
+                       objset_t *os = NULL;
+                       dmu_objset_disown(os, B_FALSE, FTAG);
+               ],[
+                       AC_DEFINE(HAVE_DMU_OBJSET_DISOWN_3ARG, 1,
+                               [Have dmu_objset_disown() with 3 args])
+               ])
        ])
 
+       AS_IF([test "x$enable_zfs" = xyes], [
+               AC_SUBST(ENABLE_ZFS, yes)
+       ], [
+               AC_SUBST(ENABLE_ZFS, no)
+       ])
        AM_CONDITIONAL(ZFS_ENABLED, [test "x$enable_zfs" = xyes])
 ])