Difference between revisions of "Feature Flags"
m (Fix OmniOS version) |
(→Feature Flags Implementation: Add FreeBSD -CURRENT, and fix link to mm@'s site) |
||
Line 12: | Line 12: | ||
{| class="wikitable" | {| class="wikitable" | ||
!Feature flag | !Feature flag | ||
!colspan= | !colspan=4|FreeBSD | ||
!ZFS on Linux | !ZFS on Linux | ||
!OpenZFS OSX | !OpenZFS OSX | ||
Line 21: | Line 21: | ||
| 9.3 | | 9.3 | ||
| 10.1 | | 10.1 | ||
| r283009 | |||
| 0.6.4 | | 0.6.4 | ||
| 1.3.1 | | 1.3.1 | ||
Line 26: | Line 27: | ||
|- | |- | ||
!async_destroy | !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 | ||
Line 34: | Line 36: | ||
|- | |- | ||
!empty_bpobj | !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 | ||
Line 42: | Line 45: | ||
|- | |- | ||
!lz4_compress | !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 | ||
Line 51: | Line 55: | ||
!multi_vdev_crash_dump | !multi_vdev_crash_dump | ||
|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 | ||
Line 59: | Line 64: | ||
!spacemap_histogram | !spacemap_histogram | ||
|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 | ||
Line 67: | Line 73: | ||
!enabled_txg | !enabled_txg | ||
|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 | ||
Line 75: | Line 82: | ||
!hole_birth | !hole_birth | ||
|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 | ||
Line 83: | Line 91: | ||
!extensible_dataset | !extensible_dataset | ||
|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 | ||
Line 92: | Line 101: | ||
|no | |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 | ||
Line 99: | Line 109: | ||
!bookmarks | !bookmarks | ||
|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 | ||
Line 107: | Line 118: | ||
!filesystem_limits | !filesystem_limits | ||
|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 | ||
Line 117: | Line 129: | ||
|no | |no | ||
|no | |no | ||
|style="background-color:lightgreen"|yes | |||
|no | |no | ||
|no | |no | ||
Line 126: | Line 139: | ||
* yes = implemented | * yes = implemented | ||
Table source: [http://blog.vx.sk/archives/44-OpenZFS-Feature-Flags-Compatibility-Matrix.html | Table source: [http://blog.vx.sk/archives/44-OpenZFS-Feature-Flags-Compatibility-Matrix.html ''OpenZFS Feature Flags Compatibility Matrix''] at blog.vx.sk |
Revision as of 22:32, 4 June 2015
Originally the ZFS on-disk format was versioned with a single number that was increased whenever a new on-disk format change was introduced. This worked well when a single entity controlled the development of ZFS; however, in the more distributed development model of OpenZFS a single version number is not ideal. Every OpenZFS implementation would need to agree on every change to the on-disk format.
One of the first OpenZFS projects was a new versioning system called "feature flags" that tags on-disk format changes with unique names. The system supports both completely independent format changes, as well as format changes that depend on each other. A pool's on-disk format is portable between OpenZFS implementations as long as all of the feature flags in use by the pool are supported by both implementations.
For more details see these slides (Jan 2012) and zpool-features(5) (illumos) or zpool-features(7) (FreeBSD).
For greatest compatibility, features that are exclusive (when enabled) should be periodically ported to all other distributions.
Feature Flags Implementation
The current state of OpenZFS feature flags implementation is in the following table.
Feature flag | FreeBSD | ZFS on Linux | OpenZFS OSX | OmniOS | |||
---|---|---|---|---|---|---|---|
8.4 | 9.3 | 10.1 | r283009 | 0.6.4 | 1.3.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 | 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 | no | no | yes |
large_blocks | no | no | no | yes | no | no | yes |
Table legend
- no = not implemented
- yes = implemented
Table source: OpenZFS Feature Flags Compatibility Matrix at blog.vx.sk