Garth Snyder eaaea55b69 Consistently encode DRR_BEGIN packed nvlist payloads with NV_ENCODE_XDR
Currently, zfs send generates a mix of nvlist encodings in DRR_BEGIN
records, some XDR and some in native byte order. The result is that
most streams currently can't be zfs received on opposite-endian systems.

zfs send generates the outer wrappers for compound streams in userspace,
and it explicitly requests NV_ENCODE_XDR format for those records. But
the BEGIN records for individual datasets are generated on the kernel
side, in dmu_send.c, where fnvlist_pack() is used for encoding. That
routine hard-wires NV_ENCODE_NATIVE format.

This PR replaces the fnvlist_pack() call with a direct call to
nvlist_pack() that specifies NV_ENCODE_XDR.

Tests are included to verify that native-encoded nvlists are not
generated by any kernel path that attaches nvlists to BEGIN records.
There's also a check for XDR encoding in the outer wrapper of
replication streams in case there is ever a regression there.

There are also two tests that have a chance of triggering (and
detecting) bug #18491. Non-triggering versions of those tests are
already included here, so when that bug is more fully characterized,
the tests can be moved to a more directly relevant category. (They
are the two tests with _with_write suffixes.)

This PR adds to zstream dump an output line that shows the exact
encoding of any nvlists in BEGIN records. This feature is used by
the tests to validate streams.

Reviewed-by: Alexander Motin <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Garth Snyder <[email protected]>
Closes #18360
Closes #18372
2026-05-12 07:49:55 -07:00
2026-05-12 07:47:21 -07:00
2026-05-11 12:19:28 -07:00
2026-03-31 16:48:33 -07:00
2022-12-22 11:34:28 -08:00
2020-06-09 21:24:09 -07:00
2018-05-29 16:00:33 -07:00
2026-04-16 16:45:20 -07:00
2020-08-26 21:44:41 -07:00
2018-05-29 16:00:33 -07:00
2020-03-16 10:46:03 -07:00

img

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.

codecov coverity

Official Resources

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: 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.0, 14.4, 13.5.

S
Description
No description provided
Readme
4 GiB
0 Stars 1 Watchers 0 Forks
Languages
C 59.9%
C++ 26.8%
Roff 4.5%
Shell 2.8%
Assembly 1.7%
Other 3.7%