mirror_zfs/tests/zfs-tests
Paul Dagnelie 5f5321effa
Handle interaction between gang blocks, copies, and FDT.
With the advent of fast dedup, there are no longer separate dedup tables
for different copies values. There is now logic that will add DVAs to
the dedup table entry if more copies are needed for new writes. However,
this interacts poorly with ganging. There are two different cases that
can result in mixed gang/non-gang BPs, which are illegal in ZFS.

This change modifies updates of existing FDT; if there are already gang
DVAs in the FDT, we prevent the new write from extending the DDT
entry. We cannot safely mix different gang trees in one block
pointer. if there are non-gang DVAs in the FDT, then this allocation may
not be gangs. If it would gang, we have to redo the whole write as a
non-dedup write.

This change also fixes a refcount leak that could occur if the lead DDT
write failed.

Sponsored by: iXsystems, Inc.
Sponsored-by: Klara, Inc.
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Paul Dagnelie <paul.dagnelie@klarasystems.com>
Closes: #17123
2025-04-21 11:26:30 -04:00
..
callbacks SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
cmd GCC 15: Fix unterminated-string-initialization (#17244) 2025-04-16 09:33:29 -07:00
include Make ganging redundancy respect redundant_metadata property (#17073) 2025-03-19 15:58:29 -07:00
tests Handle interaction between gang blocks, copies, and FDT. 2025-04-21 11:26:30 -04:00
.gitignore autoconf: use include directives instead of recursing down cmd 2022-05-10 10:18:38 -07:00
Makefile.am ZTS: reimplement kstat helper function 2025-01-21 10:12:07 -08:00