HomeFreeBSD

ZIL: Do not encrypt block pointers in lr_clone_range_t

Description

ZIL: Do not encrypt block pointers in lr_clone_range_t

In case of crash cloned blocks need to be claimed on pool import.
It is only possible if they (lr_bps) and their count (lr_nbps) are
not encrypted but only authenticated, similar to block pointer in
lr_write_t. Few other fields can be and are still encrypted.

This should fix panic on ZIL claim after crash when block cloning
is actively used.

Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Reviewed-by: Tom Caputi <caputit1@tcnj.edu>
Reviewed-by: Sean Eric Fagan <sef@FreeBSD.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Edmund Nadolski <edmund.nadolski@ixsystems.com>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #15543
Closes #15513

Details

Provenance
mavAuthored on Nov 19 2023, 1:01 AM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Nov 28 2023, 7:17 PM
Parents
rG9b9b09f452a4: dnode_is_dirty: check dnode and its data for dirtiness
Branches
Unknown
Tags
Unknown