Difference between revisions of "Feature Flags"

From OpenZFS
Jump to navigation Jump to search
m (Oops; not Oracle.)
(Redirect to new location)
 
(8 intermediate revisions by 4 users not shown)
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 a single organisation.
This page was moved to: https://openzfs.github.io/openzfs-docs/Basic%20Concepts/Feature%20Flags.html
 
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 ==
 
[http://web.archive.org/web/20160419064650/http://blog.delphix.com/csiden/files/2012/01/ZFS_Feature_Flags.pdf ''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 …".
 
[http://illumos.org/man/5/zpool-features <tt>zpool-features</tt>](5) – illumos
 
[https://www.freebsd.org/cgi/man.cgi?query=zpool-features&sektion=7&manpath=FreeBSD <tt>zpool-features</tt>](7) – FreeBSD
 
== Feature flags implementation ==
 
{| class="wikitable"
!Feature flag
!colspan=4|FreeBSD
!ZFS on Linux
!OpenZFS OSX
!OmniOS
|-
|
| 8.4
| 9.3
| 10.2
| r283009
| 0.6.5
| 1.4.5
| r151014
|-
!async_destroy
|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
|-
!empty_bpobj
|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
|-
!lz4_compress
|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
|-
!multi_vdev_crash_dump
|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|no
|no
|style="background-color:lightgreen"|yes
|-
!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
|style="background-color:lightgreen"|yes
|-
!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
|style="background-color:lightgreen"|yes
|-
!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
|style="background-color:lightgreen"|yes
|-
!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
|style="background-color:lightgreen"|yes
|-
!embedded_data
|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
|-
!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
|style="background-color:lightgreen"|yes
|-
!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
|style="background-color:lightgreen"|yes
|-
!large_blocks
|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
|}
 
'''Table legend'''
* no = not implemented
* yes = implemented
 
Source: [http://blog.vx.sk/archives/44-OpenZFS-Feature-Flags-Compatibility-Matrix.html ''OpenZFS Feature Flags Compatibility Matrix - VX weblog'']

Latest revision as of 19:26, 22 November 2020