- C 68.8%
- Shell 20.7%
- Assembly 4.9%
- M4 1.9%
- Python 1.5%
- Other 2.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
A non-raw incremental received onto a snapshot that was itself received raw re-stamps the destination's IV set guid with a fresh value, so it no longer matches the sending lineage. Nothing rejects this at the time, but a later raw incremental taken from that snapshot is rejected with an IV set guid mismatch (#8758). The failure surfaces arbitrarily later, often on a different host, with no hint that an earlier non-raw receive was the cause. The receive itself cannot tell that a snapshot was received raw from anything on disk: a raw-received snapshot and an ordinary locally-keyed one both carry an IV set guid of the same shape, one stamped from the stream and one from unique_create(), with no recorded provenance. So warning on every non-raw incremental into an encrypted dataset would fire on the common keys-local backup workflow that never hits the bug. Record the provenance instead. A raw receive now stamps a DS_FIELD_RAW_RECEIVED marker on the new snapshot, next to the ivset stamp it already writes. A non-raw incremental onto a marked snapshot, whether fresh or resumed, sets a flag that recv returns to userland, and 'zfs recv' prints a warning naming the divergence and how to avoid it. The marker is an inert extensible-dataset zap key needing no feature flag: older code never enumerates it, an unmarked snapshot (any pool written before this, or a locally-keyed lineage) simply yields no warning, and the hard late check remains as the backstop. The warning fires precisely at the point of divergence, and gives a future opt-in flag an exact predicate to gate on. Only the first non-raw hop warns, since the snapshot it creates is left unmarked; that is when the divergence actually happens, so a warning per subsequent non-raw incremental would add nothing. Tests: extend send_mixed_raw to assert the poisoning non-raw incremental warns and the matching raw incremental does not; verified in a VM that a non-raw incremental into an encrypted but non-raw-received dataset (a plain keys-local backup) stays silent. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: MorganaFuture <103630661+MorganaFuture@users.noreply.github.com> Closes #8758 Closes #18784 |
||
| .github | ||
| cmd | ||
| config | ||
| contrib | ||
| etc | ||
| include | ||
| lib | ||
| man | ||
| module | ||
| rpm | ||
| scripts | ||
| tests | ||
| udev | ||
| .editorconfig | ||
| .gitignore | ||
| .gitmodules | ||
| .mailmap | ||
| AUTHORS | ||
| autogen.sh | ||
| CODE_OF_CONDUCT.md | ||
| configure.ac | ||
| copy-builtin | ||
| COPYRIGHT | ||
| LICENSE | ||
| Makefile.am | ||
| META | ||
| NEWS | ||
| NOTICE | ||
| README.md | ||
| RELEASES.md | ||
| SECURITY.md | ||
| TEST | ||
| zfs.release.in | ||
OpenZFS is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community. This repository contains the code for running OpenZFS on Linux and FreeBSD.
Official Resources
- Documentation - for using and developing this repo
- ZoL site - Linux release info & links
- Mailing lists
- OpenZFS site - for conference videos and info on other platforms (illumos, OSX, Windows, etc)
Installation
Full documentation for installing OpenZFS on your favorite operating system can be found at the Getting Started Page.
Contribute & Develop
We have a separate document with contribution guidelines.
We have a Code of Conduct.
Release
OpenZFS is released under a CDDL license.
For more details see the NOTICE, LICENSE and COPYRIGHT files; UCRL-CODE-235197
Supported Kernels and Distributions
Linux
Given the wide variety of Linux environments, we prioritize development and testing on stable, supported kernels and distributions.
Kernel (kernel.org)
All longterm kernels from kernel.org are supported. stable kernels are usually supported in the next OpenZFS release.
Supported longterm kernels: 6.18, 6.12, 6.6, 6.1, 5.15, 5.10.
Red Hat Enterprise Linux (RHEL)
All RHEL (and compatible systems: AlmaLinux OS, Rocky Linux, etc) on the full or maintenance support tracks are supported.
Supported RHEL releases: 8.10, 9.7, 10.1.
Ubuntu
All Ubuntu LTS releases are supported.
Supported Ubuntu releases: 26.04 “Resolute”, 24.04 “Noble”, 22.04 “Jammy”.
Debian
All Debian stable and LTS releases are supported.
Supported Debian releases: 13 “Trixie”, 12 “Bookworm”, 11 “Bullseye”.
Other Distributions
Generally, if a distribution is following an LTS kernel, it should work well with OpenZFS.
FreeBSD
All FreeBSD releases receiving security support are supported by OpenZFS.
Supported FreeBSD releases: 15.1, 14.4.
