Difference between revisions of "Feature Flags"
(Update OSX 1.6.1) |
Rincebrain (talk | contribs) (→Feature flags implementation: Colored no red, centered text, added a few feature flags and newer ZoL versions) |
||
Line 27: | Line 27: | ||
!Feature flag | !Feature flag | ||
!colspan=4|FreeBSD | !colspan=4|FreeBSD | ||
!ZFS on Linux | !colspan=3|ZFS on Linux | ||
!OpenZFS OSX | !OpenZFS OSX | ||
!OmniOS | !OmniOS | ||
Line 37: | Line 37: | ||
| r313645 | | r313645 | ||
| 0.6.5 | | 0.6.5 | ||
| 0.7 | |||
| git ([https://github.com/zfsonlinux/zfs/commit/94370f59 94370f59]) | |||
| 1.6.1 | | 1.6.1 | ||
| r151014 | | r151014 | ||
|- | |- | ||
!async_destroy | !async_destroy | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!empty_bpobj | !empty_bpobj | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!lz4_compress | !lz4_compress | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!multi_vdev_crash_dump | !multi_vdev_crash_dump | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|no | |style="background-color:lightsalmon; text-align: center;"|no | ||
| | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!spacemap_histogram | !spacemap_histogram | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!enabled_txg | !enabled_txg | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!hole_birth | !hole_birth | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!extensible_dataset | !extensible_dataset | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!embedded_data | !embedded_data | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!bookmarks | !bookmarks | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!filesystem_limits | !filesystem_limits | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!large_blocks | !large_blocks | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|- | |- | ||
!sha512 | !sha512 | ||
|no | |style="background-color:lightsalmon; text-align: center;"|no | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightgreen; text-align: center;"|yes | ||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|?? | |||
|- | |||
!skein | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|?? | |||
|- | |||
!edonr | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|?? | |||
|?? | |||
|- | |||
!userobj_acccounting | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|?? | |||
|?? | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|?? | |||
|?? | |||
|- | |||
!device_removal | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|?? | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|?? | |?? | ||
|?? | |?? | ||
|- | |- | ||
! | !zpool_checkpoint | ||
|no | |style="background-color:lightsalmon; text-align: center;"|no | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightsalmon; text-align: center;"|no | ||
|style="background-color:lightgreen"|yes | |style="background-color:lightsalmon; text-align: center;"|no | ||
|style="background-color:lightgreen"|yes | |?? | ||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|?? | |||
|?? | |||
|- | |||
!spacemap_v2 | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|?? | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|?? | |||
|?? | |||
|- | |||
!encryption | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|?? | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightgreen; text-align: center;"|yes | |||
|?? | |?? | ||
|?? | |?? | ||
|- | |||
!zstd | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|style="background-color:lightsalmon; text-align: center;"|no | |||
|- | |||
|} | |} | ||
Revision as of 19:21, 7 July 2018
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(5) – illumos
zpool-features(7) – FreeBSD
Feature flags implementation
Feature flag | FreeBSD | ZFS on Linux | OpenZFS OSX | OmniOS | |||||
---|---|---|---|---|---|---|---|---|---|
10.3 | 11.0 | stable/11 | r313645 | 0.6.5 | 0.7 | git (94370f59) | 1.6.1 | r151014 | |
async_destroy | yes | yes | yes | yes | yes | yes | yes | yes | yes |
empty_bpobj | yes | yes | yes | yes | yes | yes | yes | yes | yes |
lz4_compress | yes | yes | yes | yes | yes | yes | yes | yes | yes |
multi_vdev_crash_dump | yes | yes | yes | yes | no | yes | yes | yes | yes |
spacemap_histogram | yes | yes | yes | yes | yes | yes | yes | yes | yes |
enabled_txg | yes | yes | yes | yes | yes | yes | yes | yes | yes |
hole_birth | yes | yes | yes | yes | yes | yes | yes | yes | yes |
extensible_dataset | yes | yes | yes | yes | yes | yes | yes | yes | yes |
embedded_data | yes | yes | yes | yes | yes | yes | yes | yes | yes |
bookmarks | yes | yes | yes | yes | yes | yes | yes | yes | yes |
filesystem_limits | yes | yes | yes | yes | yes | yes | yes | yes | yes |
large_blocks | yes | yes | yes | yes | yes | yes | yes | yes | yes |
sha512 | no | yes | yes | yes | no | yes | yes | yes | ?? |
skein | no | yes | yes | yes | no | yes | yes | yes | ?? |
edonr | no | no | no | no | no | yes | yes | ?? | ?? |
userobj_acccounting | no | no | no | ?? | ?? | yes | yes | ?? | ?? |
device_removal | no | no | no | ?? | no | no | yes | ?? | ?? |
zpool_checkpoint | no | no | no | ?? | no | no | yes | ?? | ?? |
spacemap_v2 | no | no | no | ?? | no | no | yes | ?? | ?? |
encryption | no | no | no | ?? | no | no | yes | ?? | ?? |
zstd | no | no | no | no | no | no | no | no | no |
Table legend
- no = not implemented
- yes = implemented
Source: OpenZFS Feature Flags Compatibility Matrix - VX weblog