Difference between revisions of "Feature Flags"

From OpenZFS
Jump to navigation Jump to search
(Clarity (recent misunderstanding about version 28); Wayback Machine for a blog post that is no longer served by illumos; a FreeBSD manual page that is not version-specific)
m (Oops; not Oracle.)
Line 1: Line 1:
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 Oracle alone.  
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.  
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.  

Revision as of 17:55, 4 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
8.4 9.3 10.2 r283009 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 no yes yes yes no no yes
spacemap_histogram no yes yes yes yes yes yes
enabled_txg no yes yes yes yes yes yes
hole_birth no yes yes yes yes yes yes
extensible_dataset no yes yes yes yes yes yes
embedded_data no no yes yes yes yes yes
bookmarks no yes yes yes yes yes yes
filesystem_limits no yes yes yes yes yes yes
large_blocks no no yes yes yes yes yes

Table legend

  • no = not implemented
  • yes = implemented

Source: OpenZFS Feature Flags Compatibility Matrix - VX weblog