Difference between revisions of "Feature Flags"

From OpenZFS
Jump to navigation Jump to search
m (Oops; not Oracle.)
(Update the supported versions of FreeBSD)
Line 32: Line 32:
|-
|-
|
|
| 8.4
| 10.3
| 9.3
| 11.0
| 10.2
| stable/11
| r283009
| r313645
| 0.6.5
| 0.6.5
| 1.4.5
| 1.4.5
Line 68: Line 68:
|-
|-
!multi_vdev_crash_dump
!multi_vdev_crash_dump
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
Line 77: Line 77:
|-
|-
!spacemap_histogram
!spacemap_histogram
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
Line 86: Line 86:
|-
|-
!enabled_txg
!enabled_txg
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
Line 95: Line 95:
|-
|-
!hole_birth
!hole_birth
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
Line 104: Line 104:
|-
|-
!extensible_dataset
!extensible_dataset
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
Line 113: Line 113:
|-
|-
!embedded_data
!embedded_data
|no
|style="background-color:lightgreen"|yes
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
Line 122: Line 122:
|-
|-
!bookmarks
!bookmarks
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
Line 131: Line 131:
|-
|-
!filesystem_limits
!filesystem_limits
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
Line 140: Line 140:
|-
|-
!large_blocks
!large_blocks
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!sha512
|no
|no
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|??
|??
|??
|-
!skein
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|??
|??
|??
|}
|}



Revision as of 19:58, 18 February 2017

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 1.4.5 r151014
async_destroy yes yes yes yes yes yes yes
empty_bpobj yes yes yes yes yes yes yes
lz4_compress yes yes yes yes yes yes yes
multi_vdev_crash_dump yes yes yes yes no no yes
spacemap_histogram yes yes yes yes yes yes yes
enabled_txg yes yes yes yes yes yes yes
hole_birth yes yes yes yes yes yes yes
extensible_dataset yes yes yes yes yes yes yes
embedded_data yes yes yes yes yes yes yes
bookmarks yes yes yes yes yes yes yes
filesystem_limits yes yes yes yes yes yes yes
large_blocks yes yes yes yes yes yes yes
sha512 no yes yes yes ?? ?? ??
skein no yes yes yes ?? ?? ??

Table legend

  • no = not implemented
  • yes = implemented

Source: OpenZFS Feature Flags Compatibility Matrix - VX weblog