2 dnl # Supported configure options. When no options are specified support
3 dnl # for ZFS OSDs will be autodetected assuming server support is enabled.
4 dnl # If the ZFS OSD cannot be built support for it is disabled and a
5 dnl # warning is issued but the configure process is allowed to continue.
7 dnl # --without-zfs - Disable zfs support.
10 dnl # --with-zfs - Enable zfs support and attempt to autodetect the zfs
11 dnl # --with-zfs=yes headers in one of the following places. Because zfs
12 dnl # support was explicitly required if the headers cannot
13 dnl # be located it is treated as a fatal error.
15 dnl # * /var/lib/dkms/zfs/${VERSION}/source
16 dnl # * /usr/src/zfs-${VERSION}/${LINUXRELEASE}
17 dnl # * /usr/src/zfs-${VERSION}
21 dnl # --with-zfs-devel=path
22 dnl # - User provided directory where zfs development headers
23 dnl # are located. This option is typically used when user
24 dnl # uses rpm2cpio to unpack src rpm.
25 dnl # Assumes layout of:
26 dnl # ${zfs-devel-path}/usr/include/libzfs
27 dnl # ${zfs-devel-path}/usr/include/libspl
28 dnl # ${zfs-devel-path}/lib64/libzfs.so.* or
29 dnl # ${zfs-devel-path}/lib/libzfs.so.*
31 dnl # --with-zfs=path - Enable zfs support and use the zfs headers in the
32 dnl # provided path. No autodetection is performed and
33 dnl # if no headers are found this is a fatal error.
35 dnl # --with-zfs-obj - When zfs support is enabled the object directory
36 dnl # will be based on the --with-zfs directory. If this
37 dnl # is detected incorrectly it can be explicitly
38 dnl # specified using this option.
40 dnl # --without-spl - Disable spl support.
43 dnl # --with-spl - Enable spl support and attempt to autodetect the spl
44 dnl # --with-spl=yes headers in one of the following places in this order:
45 dnl # * /var/lib/dkms/spl/${VERSION}/source
46 dnl # * /usr/src/spl-${VERSION}/${LINUXRELEASE}
47 dnl # * /usr/src/spl-${VERSION}
51 dnl # --with-spl=path - Enable spl support and use the spl headers in the
52 dnl # provided path. No autodetection is performed.
54 dnl # --with-spl-obj - When spl support is enabled the object directory
55 dnl # will be based on the --with-spl directory. If this
56 dnl # is detected incorrectly it can be explicitly
57 dnl # specified using this option.
61 AS_HELP_STRING([--with-spl=PATH],
62 [Path to spl source]),
65 AC_ARG_WITH([spl-obj],
66 AS_HELP_STRING([--with-spl-obj=PATH],
67 [Path to spl build objects]),
71 dnl # The existence of spl.release[.in] is used to identify a valid
72 dnl # source directory. In order of preference:
74 splver=$(ls -1 /usr/src/ | grep -m1 spl | cut -f2 -d'-')
75 spldkms="/var/lib/dkms/spl/${splver}"
76 splsrc1="/usr/src/spl-${splver}/${LINUXRELEASE}"
77 splsrc2="/usr/src/spl-${splver}"
81 AC_MSG_CHECKING([spl source directory])
82 AS_IF([test -z "${splsrc}"], [
83 AS_IF([test -e "${spldkms}/source/spl.release.in"], [
84 splsrc=${spldkms}/source
85 ], [test -e "${splsrc1}/spl.release.in"], [
87 ], [test -e "${splsrc2}/spl.release.in"], [
89 ], [test -e "${splsrc3}/spl.release.in"], [
90 splsrc=$(readlink -f "${splsrc3}")
91 ], [test -e "${splsrc4}/spl.release.in"], [
97 AC_MSG_RESULT([$splsrc])
99 AS_IF([test ! -e "$splsrc/spl.release" &&
100 test ! -e "$splsrc/spl.release.in"], [
105 dnl # The existence of the spl_config.h is used to identify a valid
106 dnl # spl object directory. In many cases the object and source
107 dnl # directory are the same, however the objects may also reside
108 dnl # is a subdirectory named after the kernel version. When
109 dnl # weak modules are used, the kernel version may not be the
110 dnl # same as the LINUXRELEASE against which we are building lustre.
112 AC_MSG_CHECKING([spl build directory])
113 AS_IF([test -z "$splobj"], [
114 last_spl_obj_dir=$(ls -d ${splsrc}/[[0-9]]*/ 2> /dev/null | tail -n 1 | sed 's|/$||')
115 AS_IF([test "${splsrc}" = "${spldkms}/source"], [
116 AS_IF([test -e "${spldkms}/${LINUXRELEASE}/${target_cpu}/spl_config.h"], [
117 splobj=${spldkms}/${LINUXRELEASE}/${target_cpu}
121 ],[test -e "${splsrc}/${LINUXRELEASE}/spl_config.h"], [
122 splobj="${splsrc}/${LINUXRELEASE}"
123 ], [test -e "${splsrc}/spl_config.h"], [
125 ], [test -e "${last_spl_obj_dir}/spl_config.h"], [
126 splobj="${last_spl_obj_dir}"
131 AC_MSG_RESULT([$splobj])
133 AS_IF([test ! -e "$splobj/spl_config.h"], [
138 dnl # Verify the source version using SPL_META_VERSION in spl_config.h
140 AS_IF([test x$enable_zfs = xyes], [
141 AC_MSG_CHECKING([spl source version])
142 AS_IF([fgrep -q SPL_META_VERSION $splobj/spl_config.h], [
143 splver=$((echo "#include <spl_config.h>";
144 echo "splver=SPL_META_VERSION-SPL_META_RELEASE") |
146 grep "^splver=" | tr -d \" | cut -d= -f2)
151 AC_MSG_RESULT([$splver])
155 dnl # Verify the modules systems exist by the expect name.
157 AS_IF([test x$enable_zfs = xyes], [
158 AC_MSG_CHECKING([spl file name for module symbols])
159 AS_IF([test -r $splobj/$SYMVERFILE], [
161 EXTRA_SYMBOLS="$EXTRA_SYMBOLS $splobj/$SYMVERFILE"
162 ], [test -r $splobj/module/$SYMVERFILE], [
164 EXTRA_SYMBOLS="$EXTRA_SYMBOLS $splobj/module/$SYMVERFILE"
169 AC_MSG_RESULT([$splsym])
172 AS_IF([test x$enable_zfs = xyes], [
175 SPL_VERSION=${splver}
179 AC_SUBST(SPL_VERSION)
180 AC_SUBST(EXTRA_SYMBOLS)
186 AC_ARG_WITH([zfs-obj],
187 AS_HELP_STRING([--with-zfs-obj=PATH],
188 [Path to zfs build objects]),
192 dnl # The existence of zfs.release[.in] is used to identify a valid
193 dnl # source directory. In order of preference:
195 zfsver=$(ls -1 /usr/src/ | grep -m1 zfs | cut -f2 -d'-')
196 zfsdkms="/var/lib/dkms/zfs/${zfsver}"
197 zfssrc1="/usr/src/zfs-${zfsver}/${LINUXRELEASE}"
198 zfssrc2="/usr/src/zfs-${zfsver}"
202 AC_MSG_CHECKING([zfs source directory])
203 AS_IF([test -z "${zfssrc}"], [
204 AS_IF([test -e "${zfsdkms}/source/zfs.release.in"], [
205 zfssrc=${zfsdkms}/source
206 ], [test -e "${zfssrc1}/zfs.release.in"], [
208 ], [test -e "${zfssrc2}/zfs.release.in"], [
210 ], [test -e "${zfssrc3}/zfs.release.in"], [
211 zfssrc=$(readlink -f "${zfssrc3}")
212 ], [test -e "${zfssrc4}/zfs.release.in"], [
218 AC_MSG_RESULT([$zfssrc])
220 AS_IF([test ! -e "$zfssrc/zfs.release.in" &&
221 test ! -e "$zfssrc/zfs.release"], [
226 dnl # The existence of the zfs_config.h is used to identify a valid
227 dnl # zfs object directory. In many cases the object and source
228 dnl # directory are the same, however the objects may also reside
229 dnl # is a subdirectory named after the kernel version. When
230 dnl # weak modules are used, the kernel version may not be the
231 dnl # same as the LINUXRELEASE against which we are building lustre.
233 AC_MSG_CHECKING([zfs build directory])
234 AS_IF([test -z "$zfsobj"], [
235 last_zfs_obj_dir=$(ls -d ${zfssrc}/[[0-9]]*/ 2> /dev/null | tail -n 1 | sed 's|/$||')
236 AS_IF([test "${zfssrc}" = "${zfsdkms}/source"], [
237 AS_IF([test -e "${zfsdkms}/${LINUXRELEASE}/${target_cpu}/zfs_config.h"], [
238 zfsobj=${zfsdkms}/${LINUXRELEASE}/${target_cpu}
242 ], [test -e "${zfssrc}/${LINUXRELEASE}/zfs_config.h"], [
243 zfsobj="${zfssrc}/${LINUXRELEASE}"
244 ], [test -e "${zfssrc}/zfs_config.h"], [
246 ], [test -e "${last_zfs_obj_dir}/zfs_config.h"], [
247 zfsobj="${last_zfs_obj_dir}"
253 AC_MSG_RESULT([$zfsobj])
254 AS_IF([test ! -e "$zfsobj/zfs_config.h"], [
259 dnl # Verify the source version using SPL_META_VERSION in spl_config.h
261 AS_IF([test x$enable_zfs = xyes], [
262 AC_MSG_CHECKING([zfs source version])
263 AS_IF([fgrep -q ZFS_META_VERSION $zfsobj/zfs_config.h], [
264 zfsver=$((echo "#include <zfs_config.h>";
265 echo "zfsver=ZFS_META_VERSION-ZFS_META_RELEASE") |
267 grep "^zfsver=" | tr -d \" | cut -d= -f2)
272 AC_MSG_RESULT([$zfsver])
276 dnl # Verify the modules systems exist by the expect name.
278 AS_IF([test x$enable_zfs = xyes], [
279 AC_MSG_CHECKING([zfs file name for module symbols])
280 AS_IF([test -r $zfsobj/$SYMVERFILE], [
282 EXTRA_SYMBOLS="$EXTRA_SYMBOLS $zfsobj/$SYMVERFILE"
283 ], [test -r $zfsobj/module/$SYMVERFILE], [
285 EXTRA_SYMBOLS="$EXTRA_SYMBOLS $zfsobj/module/$SYMVERFILE"
290 AC_MSG_RESULT([$zfssym])
293 AS_IF([test x$enable_zfs = xyes], [
296 ZFS_VERSION=${zfsver}
300 AC_SUBST(ZFS_VERSION)
301 AC_SUBST(EXTRA_SYMBOLS)
306 AC_DEFUN([LB_ZFS_DEVEL], [
307 AC_ARG_WITH([zfs-devel],
308 [AS_HELP_STRING([--with-zfs-devel=PATH],
309 [Path to zfs development headers])],
310 [zfsdevel="$withval"])
312 AC_MSG_CHECKING([user provided zfs devel headers])
313 AS_IF([test ! -z "${zfsdevel}"], [
314 AS_IF([test -d "${zfsdevel}/usr/include/libspl" && test -d "${zfsdevel}/usr/include/libzfs"], [
315 zfsinc="-I $zfsdevel/usr/include/libspl -I $zfsdevel/usr/include/libzfs"
316 zfslib="-L$zfsdevel/usr/lib64 -L$zfsdevel/usr/lib -L$zfsdevel/lib64 -L$zfsdevel/lib"
318 AC_MSG_ERROR([Path to development headers directory does not exist])
321 AC_MSG_RESULT([$zfsinc])
324 AC_DEFUN([LB_ZFS_USER], [
326 dnl # Detect user space zfs development headers.
328 AC_MSG_CHECKING([zfs devel headers])
329 AS_IF([test -z "${zfsinc}"], [
330 AS_IF([test -e "${zfssrc}/include/libzfs.h" && test -e "${zfssrc}/lib/libspl/include"], [
331 zfsinc="-I $zfssrc/lib/libspl/include -I $zfssrc/include"
332 zfslib="-L$zfssrc/lib/libzfs/.libs/ -L$zfssrc/lib/libnvpair/.libs"
333 ], [test -d /usr/include/libzfs && test -d /usr/include/libspl], [
334 zfsinc="-I/usr/include/libspl -I /usr/include/libzfs"
342 AC_MSG_RESULT([$zfsinc])
344 ZFS_LIBZFS_INCLUDE=${zfsinc}
345 ZFS_LIBZFS_LDFLAGS=${zfslib}
346 ZFS_LIBZFS_LIBS="-lzfs -lnvpair -lzpool"
347 AC_SUBST(ZFS_LIBZFS_INCLUDE)
348 AC_SUBST(ZFS_LIBZFS_LDFLAGS)
349 AC_SUBST(ZFS_LIBZFS_LIBS)
352 AC_DEFUN([LB_CONFIG_ZFS], [
354 [AS_HELP_STRING([--with-zfs=PATH], [Path to zfs source])],
356 AS_IF([test x$withval = xno], [
360 ], [test x$withval = xyes], [
371 AS_IF([test x$enable_server != xno], [
382 AC_MSG_CHECKING([whether to enable zfs])
383 AC_MSG_RESULT([$enable_zfs])
385 AS_IF([test x$enable_zfs = xyes], [
386 AS_IF([test x$enable_modules = xyes], [
393 dnl # Define zfs source code version
395 ZFS_MAJOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\1/'])
396 ZFS_MINOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\2/'])
397 ZFS_PATCH=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\3/'])
398 ZFS_FIX=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\5/'])
399 AS_IF([test -z "$ZFS_FIX"], [ZFS_FIX="0"])
401 AC_DEFINE_UNQUOTED([ZFS_MAJOR], [$ZFS_MAJOR], [zfs major version])
402 AC_DEFINE_UNQUOTED([ZFS_MINOR], [$ZFS_MINOR], [zfs minor version])
403 AC_DEFINE_UNQUOTED([ZFS_PATCH], [$ZFS_PATCH], [zfs patch version])
404 AC_DEFINE_UNQUOTED([ZFS_FIX], [$ZFS_FIX], [zfs fix version])
407 dnl # SPL is only needed if ZFS is prior to 0.8.0
409 AS_IF([test x$enable_modules = xyes && test -n "$ZFS_MAJOR" &&
410 test $ZFS_MAJOR -eq 0 && test $ZFS_MINOR -lt 8], [
417 dnl # enable_zfs will be set to no in LB_SPL or LB_ZFS if
418 dnl # one of more of the build requirements is not met.
420 AS_IF([test x$enable_zfs = xyes], [
421 AC_DEFINE(HAVE_ZFS_OSD, 1, Enable zfs osd)
423 AS_IF([test x$require_zfs = xyes], [
426 Required zfs osd cannot be built due to missing zfs development headers.
428 Support for zfs can be enabled by downloading the required packages for your
429 distribution. See http://zfsonlinux.org/ to determine is zfs is supported by
435 Disabling optional zfs osd due to missing development headers.
437 Support for zfs can be enabled by downloading the required packages for your
438 distribution. See http://zfsonlinux.org/ to determine is zfs is supported by
446 AS_IF([test "x$enable_zfs" = xyes], [
447 LB_CHECK_COMPILE([if zfs defines dsl_pool_config_enter/exit],
448 dsl_pool_config_enter, [
449 #include <sys/dsl_pool.h>
451 dsl_pool_config_enter(NULL, FTAG);
453 AC_DEFINE(HAVE_DSL_POOL_CONFIG, 1,
454 [Have dsl_pool_config_enter/exit in ZFS])
456 LB_CHECK_COMPILE([if zfs defines dsl_sync_task_do_nowait],
457 dsl_sync_task_do_nowait, [
458 #include <sys/dsl_synctask.h>
460 dsl_sync_task_do_nowait(NULL, NULL, NULL, NULL, NULL, 0, NULL);
462 AC_DEFINE(HAVE_DSL_SYNC_TASK_DO_NOWAIT, 1,
463 [Have dsl_sync_task_do_nowait in ZFS])
465 LB_CHECK_COMPILE([if zfs defines sa_spill_alloc],
467 #include <sys/kmem.h>
472 ptr = sa_spill_alloc(KM_SLEEP);
475 AC_DEFINE(HAVE_SA_SPILL_ALLOC, 1,
476 [Have sa_spill_alloc in ZFS])
478 LB_CHECK_COMPILE([if zfs defines spa_maxblocksize],
485 size = spa_maxblocksize(spa);
487 AC_DEFINE(HAVE_SPA_MAXBLOCKSIZE, 1,
488 [Have spa_maxblocksize in ZFS])
492 dnl # ZFS 0.7.x adds support for large dnodes. This
493 dnl # allows Lustre to optionally specify the size of a
494 dnl # dnode which ZFS will then use to store metadata such
495 dnl # as xattrs. The default dnode size specified by the
496 dnl # 'dnodesize' dataset property will be used unless a
497 dnl # specific value is provided.
499 LB_CHECK_COMPILE([if zfs defines dmu_object_alloc_dnsize],
500 dmu_object_alloc_dnsize, [
502 #include <sys/dnode.h>
505 dmu_object_type_t objtype = DMU_OT_NONE;
507 dmu_object_type_t bonustype = DMU_OT_SA;
508 int dnodesize = DNODE_MIN_SIZE;
512 id = dmu_object_alloc_dnsize(os, objtype, blocksize,
514 DN_BONUS_SIZE(dnodesize),
517 AC_DEFINE(HAVE_DMU_OBJECT_ALLOC_DNSIZE, 1,
518 [Have dmu_object_alloc_dnsize in ZFS])
522 dnl # ZFS 0.7.x extended dmu_prefetch() to take an additional
523 dnl # 'level' and 'priority' argument. Use a level of 0 and a
524 dnl # priority of ZIO_PRIORITY_SYNC_READ to replicate the
525 dnl # behavior of the four argument version.
527 LB_CHECK_COMPILE([if ZFS has 'dmu_prefetch' with 6 args],
536 enum zio_priority pri = ZIO_PRIORITY_SYNC_READ;
538 dmu_prefetch(os, object, level, offset, len, pri);
540 AC_DEFINE(HAVE_DMU_PREFETCH_6ARG, 1,
541 [Have 6 argument dmu_pretch in ZFS])
544 dnl # ZFS 0.7.0 feature: SPA_FEATURE_USEROBJ_ACCOUNTING
546 LB_CHECK_COMPILE([if ZFS has native dnode accounting supported],
547 dmu_objset_userobjused_enabled, [
548 #include <sys/dmu_objset.h>
550 dmu_objset_userobjused_enabled(NULL);
552 AC_DEFINE(HAVE_DMU_USEROBJ_ACCOUNTING, 1,
553 [Have native dnode accounting in ZFS])
556 dnl # ZFS 0.7.0 feature: MULTIHOST
558 restore_CFLAGS=$CFLAGS
559 CFLAGS="$CFLAGS $ZFS_LIBZFS_INCLUDE -Werror"
560 AC_MSG_CHECKING([[if ZFS has multihost protection]])
564 #define _LARGEFILE64_SOURCE 1
565 #include <sys/sysmacros.h>
571 AC_DEFINE(HAVE_ZFS_MULTIHOST, 1,
572 [Have multihost protection in ZFS])
573 spa_multihost_fn="yes"],[spa_multihost_fn="no"]),
574 AC_MSG_RESULT([$spa_multihost_fn])
575 CFLAGS=$restore_CFLAGS
577 dnl # ZFS 0.7.x adds new method zap_lookup_by_dnode
579 LB_CHECK_COMPILE([if ZFS has 'zap_lookup_by_dnode'],
580 zap_lookup_by_dnode, [
582 #include <sys/dnode.h>
585 zap_lookup_by_dnode(dn, NULL, 1, 1, NULL);
587 AC_DEFINE(HAVE_ZAP_LOOKUP_BY_DNODE, 1,
588 [Have zap_lookup_by_dnode() in ZFS])
591 dnl # ZFS 0.7.x adds new method zap_add_by_dnode
593 LB_CHECK_COMPILE([if ZFS has 'zap_add_by_dnode'],
596 #include <sys/dnode.h>
599 zap_add_by_dnode(dn, NULL, 1, 1, NULL, NULL);
601 AC_DEFINE(HAVE_ZAP_ADD_BY_DNODE, 1,
602 [Have zap_add_by_dnode() in ZFS])
605 dnl # ZFS 0.7.x adds new method zap_remove_by_dnode
607 LB_CHECK_COMPILE([if ZFS has 'zap_remove_by_dnode'],
608 zap_remove_by_dnode, [
610 #include <sys/dnode.h>
613 zap_remove_by_dnode(dn, NULL, NULL);
615 AC_DEFINE(HAVE_ZAP_REMOVE_ADD_BY_DNODE, 1,
616 [Have zap_remove_by_dnode() in ZFS])
619 dnl # ZFS 0.7.x adds new method dmu_tx_hold_zap_by_dnode
621 LB_CHECK_COMPILE([if ZFS has 'dmu_tx_hold_zap_by_dnode'],
622 dmu_tx_hold_zap_by_dnode, [
624 #include <sys/dnode.h>
627 dmu_tx_hold_zap_by_dnode(NULL, dn, TRUE, NULL);
629 AC_DEFINE(HAVE_DMU_TX_HOLD_ZAP_BY_DNODE, 1,
630 [Have dmu_tx_hold_zap_by_dnode() in ZFS])
633 dnl # ZFS 0.7.x adds new method dmu_tx_hold_write_by_dnode
635 LB_CHECK_COMPILE([if ZFS has 'dmu_tx_hold_write_by_dnode'],
636 dmu_tx_hold_write_by_dnode, [
638 #include <sys/dnode.h>
641 dmu_tx_hold_write_by_dnode(NULL, dn, 0, 0);
643 AC_DEFINE(HAVE_DMU_TX_HOLD_WRITE_BY_DNODE, 1,
644 [Have dmu_tx_hold_write_by_dnode() in ZFS])
647 dnl # ZFS 0.7.x adds new method dmu_write_by_dnode
649 LB_CHECK_COMPILE([if ZFS has 'dmu_write_by_dnode'],
650 dmu_write_by_dnode, [
652 #include <sys/dnode.h>
655 dmu_write_by_dnode(dn, 0, 0, NULL, NULL);
657 AC_DEFINE(HAVE_DMU_WRITE_BY_DNODE, 1,
658 [Have dmu_write_by_dnode() in ZFS])
661 dnl # ZFS 0.7.x adds new method dmu_read_by_dnode
663 LB_CHECK_COMPILE([if ZFS has 'dmu_read_by_dnode'],
666 #include <sys/dnode.h>
669 dmu_read_by_dnode(dn, 0, 0, NULL, 0);
671 AC_DEFINE(HAVE_DMU_READ_BY_DNODE, 1,
672 [Have dmu_read_by_dnode() in ZFS])
675 dnl # ZFS 0.7.2 adds new method dmu_tx_mark_netfree
677 LB_CHECK_COMPILE([if ZFS has 'dmu_tx_mark_netfree'],
678 dmu_tx_mark_netfree, [
682 dmu_tx_mark_netfree(tx);
684 AC_DEFINE(HAVE_DMU_TX_MARK_NETFREE, 1,
685 [Have dmu_tx_mark_netfree])
688 dnl # ZFS 0.7.10 changes timestruc_t to inode_timespec_t
690 LB_CHECK_COMPILE([if SPL has 'inode_timespec_t'],
691 zfs_have_inode_timespec, [
692 #include <sys/fs/zfs.h>
694 inode_timespec_t now;
697 AC_DEFINE(HAVE_ZFS_INODE_TIMESPEC, 1,
698 [Have inode_timespec_t])
700 dnl # ZFS 0.7.12/0.8.x uses zfs_refcount_add() instead of
701 dnl # refcount_add(). ZFS 2.0 renamed sys/refcount.h to
702 dnl # sys/zfs_refcount.h, rather the add another check to
703 dnl # determine the correct header name include it
704 dnl # indirectly through sys/dnode.h.
706 LB_CHECK_COMPILE([if ZFS has 'zfs_refcount_add'],
708 #include <sys/dnode.h>
710 zfs_refcount_add((zfs_refcount_t *) NULL, NULL);
712 AC_DEFINE(HAVE_ZFS_REFCOUNT_ADD, 1,
713 [Have zfs_refcount_add])
716 dnl # ZFS 0.8.x changes dmu_objset_own for encryption
718 LB_CHECK_COMPILE([if ZFS has 'dmu_objset_own' with 6 args],
720 #include <sys/dmu_objset.h>
723 dmu_objset_type_t type = DMU_OST_ANY;
724 dmu_objset_own(NULL, type, B_FALSE, B_TRUE, FTAG, &os);
726 AC_DEFINE(HAVE_DMU_OBJSET_OWN_6ARG, 1,
727 [Have dmu_objset_own() with 6 args])
730 dnl # ZFS 0.8.x changes dmu_objset_disown for encryption
732 LB_CHECK_COMPILE([if ZFS has 'dmu_objset_disown' with 3 args],
734 #include <sys/dmu_objset.h>
737 dmu_objset_disown(os, B_TRUE, FTAG);
739 AC_DEFINE(HAVE_DMU_OBJSET_DISOWN_3ARG, 1,
740 [Have dmu_objset_disown() with 3 args])
743 dnl # ZFS exports dmu_offet_next
745 AC_CACHE_CHECK([if ZFS exports 'dmu_offset_next'],
746 [lb_cv_dmu_offset_next], [
747 lb_cv_dmu_offset_next="no"
748 AS_IF([grep -q -E "EXPORT_SYMBOL.*\(dmu_offset_next\)" "$zfssrc/module/zfs/dmu.c" 2>/dev/null],
749 [lb_cv_dmu_offset_next="yes"])
751 AS_IF([test "x$lb_cv_dmu_offset_next" = "xyes"], [
752 AC_DEFINE(HAVE_DMU_OFFSET_NEXT, 1,
753 [Have dmu_offset_next() exported])
756 dnl # ZFS 2.0 replaced .db_last_dirty / .dr_next with a list_t
757 dnl # and list_node_t named .db_dirty_records / .dr_dbuf_node.
759 LB_CHECK_COMPILE([if ZFS has 'db_dirty_records' list_t],
761 #include <sys/dbuf.h>
764 dbuf_dirty_record_t *dr;
765 dr = list_head(&db.db_dirty_records);
767 AC_DEFINE(HAVE_DB_DIRTY_RECORDS_LIST, 1,
768 [Have db_dirty_records list_t])
772 AS_IF([test "x$enable_zfs" = xyes], [
773 AC_SUBST(ENABLE_ZFS, yes)
775 AC_SUBST(ENABLE_ZFS, no)
777 AM_CONDITIONAL(ZFS_ENABLED, [test "x$enable_zfs" = xyes])
778 AM_CONDITIONAL(SPL_ENABLED, [test "x$enable_spl" = xyes])