Difference between revisions of "Feature Flags"

From OpenZFS
Jump to navigation Jump to search
(→‎Feature flags implementation: Just inline from zgrep.org)
(Redirect to new location)
 
(4 intermediate revisions by 2 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"
!rowspan=2|Feature Flag
!rowspan=2|Read-Only<br />Compatible
!colspan=1|DragonFlyBSD
!colspan=3|FreeBSD
!colspan=1|Joyent
!colspan=1|NetBSD
!colspan=3|OmniOSCE
!colspan=1|OpenZFS
!colspan=3|OpenZFS on OSX
!colspan=3|ZFS on Linux
|-
| zfsport
| 11.2.0
| 12.0.0
| head
| master
| main
| r151026
| r151028
| master
| master
| 1.8.0
| 1.8.1
| master
| 0.6.5.11
| 0.7.12
| master
|-
!style="text-align:left"|encryption
|style="background-color:yellow"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|resilver_defer
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|bookmarks
|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|device_removal
|style="background-color:yellow"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|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
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|embedded_data
|style="background-color:yellow"|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|enabled_txg
|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|extensible_dataset
|style="background-color:yellow"|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|hole_birth
|style="background-color:yellow"|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|obsolete_counts
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|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
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|spacemap_histogram
|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|spacemap_v2
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|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
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|zpool_checkpoint
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|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
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|filesystem_limits
|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|multi_vdev_crash_dump
|style="background-color:yellow"|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
|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
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|edonr
|style="background-color:yellow"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|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
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|lz4_compress
|style="background-color:yellow"|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|sha512
|style="background-color:yellow"|no
|style="background-color:lightsalmon"|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
|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:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|skein
|style="background-color:yellow"|no
|style="background-color:lightsalmon"|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
|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:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|large_block
|style="background-color:yellow"|no
|style="background-color:lightsalmon"|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
|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
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|allocation_classes
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|large_dnode
|style="background-color:yellow"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|project_quota
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|-
!style="text-align:left"|userobj_accounting
|style="background-color:lightgreen"|yes
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightsalmon"|no
|style="background-color:lightgreen"|yes
|style="background-color:lightgreen"|yes
|-
|}
 
'''Table legend'''
* no = not implemented
* yes = implemented
 
Source: [https://zgrep.org/zfs.html] as of 20190121

Latest revision as of 19:26, 22 November 2020