Feature Flags

ZFS on-disk formats were originally versioned with a single number, which increased whenever the format changed. The numbered approach was suitable when development of ZFS was driven by a single organisation.

For distributed development of OpenZFS, version numbering was unsuitable. Any change to the number would have required agreement, across all implementations, of each change to the on-disk format.

OpenZFS feature flags – an alternative to traditional version numbering – allow a uniquely named pool property for each change to the on-disk format. This approach supports:

  • format changes that are independent

  • format changes that depend on each other.

Compatibility

Where all features that are used by a pool are supported by multiple implementations of OpenZFS, the on-disk format is portable across those implementations.

Features that are exclusive when enabled should be periodically ported to all distributions.

Reference materials

ZFS Feature Flags (Christopher Siden, 2012-01, in the Internet Archive Wayback Machine) in particular: “… Legacy version numbers still exist for pool versions 1-28 …”.

zpool-features(7) man page - OpenZFS

zpool-features (5) – illumos

Feature flags implementation per OS

ZFS Feature Matrix
Feature FlagRead-Only
Compatible
OpenZFS (Linux, FreeBSD 13+)FreeBSD pre OpenZFSIllumosJoyentNetBSDNexentaOmniOS CEOpenZFS on OS X
0.6.5.110.7.130.8.62.0.72.1.162.2.102.3.82.4.3master12mastermastermainmasterr151056r151058master2.3.1p12.3.1p22.4.1rc5main
org.zfsonlinux:allocation_classesyesnonoyesyesyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyes
com.delphix:async_destroyyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
org.openzfs:blake3nonononononoyesyesyesyesnonononononononoyesyesyesyes
com.fudosecurity:block_cloningyesnononononoyesyesyesyesnonononononononoyesyesyesyes
com.truenas:block_cloning_endianyesnononononononoyesyesnonononononononononoyesno
com.datto:bookmark_v2nononoyesyesyesyesyesyesyesnoyesyesnonoyesyesyesyesyesyesyes
com.delphix:bookmark_writtennonononoyesyesyesyesyesyesnonononononononoyesyesyesyes
com.delphix:bookmarksyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.nexenta:class_of_storageyesnononononononononononononoyesnonononononono
org.openzfs:device_rebuildyesnononoyesyesyesyesyesyesnonononononononoyesyesyesyes
com.delphix:device_removalnononoyesyesyesyesyesyesyesyesyesyesnoyesyesyesyesyesyesyesyes
org.openzfs:draidnononononoyesyesyesyesyesnonononononononoyesyesyesyes
com.seagate:draid_failure_domainsnononononononononoyesnononononononononononono
com.klarasystems:dynamic_gang_headernonononononononoyesyesnonononononononononoyesno
org.illumos:edonrnoyes1yes1yes1yes1yes1yesyesyesyesnoyesyesnoyesyesyesyesyesyesyesyes
com.delphix:embedded_datanoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.delphix:empty_bpobjyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.delphix:enabled_txgyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.datto:encryptionnononoyesyesyesyesyesyesyesnoyes2yesnonoyesyesyesyesyesyesyes
com.delphix:extensible_datasetnoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.klarasystems:fast_dedupyesnonononononoyesyesyesnonononononononoyesyesyesyes
com.joyent:filesystem_limitsyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.delphix:head_errlognonononononoyesyesyesyesnonononononononoyesyesyesyes
com.delphix:hole_birthnoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
org.open-zfs:large_blocksnoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
org.zfsonlinux:large_dnodenonoyesyesyesyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyes
com.klarasystems:large_microzapyesnonononononoyesyesyesnonononononononoyesyesyesyes
com.delphix:livelistyesnononoyesyesyesyesyesyesnonononononononoyesyesyesyes
com.delphix:log_spacemapyesnononoyesyesyesyesyesyesnoyesyesnonoyesyesyesyesyesyesyes
org.zfsonlinux:longnamenononononononoyesyesyesnonononononononoyesyesyesyes
org.illumos:lz4_compressnoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.nexenta:meta_devicesyesnononononononononononononoyesnonononononono
com.joyent:multi_vdev_crash_dumpnonoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.delphix:obsolete_countsyesnonoyesyesyesyesyesyesyesyesyesyesnoyesyesyesyesyesyesyesyes
com.truenas:physical_rewriteyesnononononononoyesyesnonononononononononoyesno
org.zfsonlinux:project_quotayesnonoyesyesyesyesyesyesyesnoyesyesnonoyesyesyesyesyesyesyes
org.openzfs:raidz_expansionnononononononoyesyesyesnonononononononoyesyesyesyes
com.delphix:redacted_datasetsnonononoyesyesyesyesyesyesnonononononononoyesyesyesyes
com.delphix:redaction_bookmarksnonononoyesyesyesyesyesyesnonononononononoyesyesyesyes
com.delphix:redaction_list_spillnononononononoyesyesyesnonononononononoyesyesyesyes
com.datto:resilver_deferyesnonoyesyesyesyesyesyesyesnoyesyesnonoyesyesyesyesyesyesyes
org.illumos:sha512nonoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
org.illumos:skeinnonoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.delphix:spacemap_histogramyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyes
com.delphix:spacemap_v2yesnonoyesyesyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyes
org.zfsonlinux:userobj_accountingyesnoyesyesyesyesyesyesyesyesnoyesyesnonoyesyesyesyesyesyesyes
com.nexenta:vdev_propertiesyesnononononononononononononoyesnonononononono
com.klarasystems:vdev_zaps_v2nonononononoyesyesyesyesnonononononononoyesyesyesyes
com.nexenta:wbcnonononononononononononononoyesnonononononono
org.openzfs:zilsaxattryesnononononoyesyesyesyesnoyesyesnonoyesyesyesyesyesyesyes
com.delphix:zpool_checkpointyesnonoyesyesyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyes
org.freebsd:zstd_compressnonononoyesyesyesyesyesyesnonononononononoyesyesyesyes

Table generates by parsing manpages for feature flags, and is entirely dependent on good, accurate documentation.
Last updated on 2026-07-09T04:26:01.463841Z using compatibility_matrix.py.