mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Fix noop receive of raw send stream
Currently, the noop receive code fails to work with raw send streams and resuming send streams. This happens because zfs_receive_impl() reads the DRR_BEGIN payload without reading the payload itself. Normally, the kernel expects to read this itself, but in this case the recv_skip() code runs instead and it is not prepared to handle the stream being left at any place other than the beginning of a record. This patch resolves this issue by manually reading the DRR_BEGIN payload in the dry-run case. This patch also includes a number of small fixups in this code path. Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Paul Dagnelie <pcd@delphix.com> Signed-off-by: Tom Caputi <tcaputi@datto.com> Closes #9221 Closes #9173
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
# 9. Verify the key is unavailable
|
||||
# 10. Attempt to load the key and mount the dataset
|
||||
# 11. Verify the checksum of the file is the same as the original
|
||||
# 12. Verify 'zfs receive -n' works with the raw stream
|
||||
#
|
||||
|
||||
verify_runnable "both"
|
||||
@@ -88,4 +89,6 @@ typeset cksum2=$(md5digest /$TESTPOOL/$TESTFS1/c1/$TESTFILE0)
|
||||
[[ "$cksum2" == "$checksum" ]] || \
|
||||
log_fail "Checksums differ ($cksum2 != $checksum)"
|
||||
|
||||
log_must eval "zfs send -w $snap | zfs receive -n $TESTPOOL/$TESTFS3"
|
||||
|
||||
log_pass "ZFS can receive streams from raw sends"
|
||||
|
||||
Reference in New Issue
Block a user