Feature Flags

From OpenZFS
Jump to: navigation, search

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.6.1 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 ?? yes ??
skein no yes yes yes ?? yes ??

Table legend

  • no = not implemented
  • yes = implemented

Source: OpenZFS Feature Flags Compatibility Matrix - VX weblog