summaryrefslogtreecommitdiff
path: root/usr/src/lib/libzfs/common/libzfs_sendrecv.c
diff options
context:
space:
mode:
authorSerapheim Dimitropoulos <serapheim@delphix.com>2017-01-17 17:04:34 -0800
committerMatthew Ahrens <mahrens@delphix.com>2017-01-18 14:47:18 -0800
commit7c13517fff71be473e47531ef4330160c042bedc (patch)
treec8279f8fc882d8f592316f9f36be5272ef1d403b /usr/src/lib/libzfs/common/libzfs_sendrecv.c
parent95e79c0b22e3ef2a1ac6412a4ab12cd99922fc12 (diff)
downloadillumos-gate-7c13517fff71be473e47531ef4330160c042bedc.tar.gz
7745 print error if lzc_* is called before libzfs_core_init
Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src/lib/libzfs/common/libzfs_sendrecv.c')
-rw-r--r--usr/src/lib/libzfs/common/libzfs_sendrecv.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/usr/src/lib/libzfs/common/libzfs_sendrecv.c b/usr/src/lib/libzfs/common/libzfs_sendrecv.c
index b8db4c9c8e..8d4f2fccd8 100644
--- a/usr/src/lib/libzfs/common/libzfs_sendrecv.c
+++ b/usr/src/lib/libzfs/common/libzfs_sendrecv.c
@@ -266,6 +266,15 @@ cksummer(void *arg)
ofp = fdopen(dda->inputfd, "r");
while (ssread(drr, sizeof (*drr), ofp) != 0) {
+ /*
+ * kernel filled in checksum, we are going to write same
+ * record, but need to regenerate checksum.
+ */
+ if (drr->drr_type != DRR_BEGIN) {
+ bzero(&drr->drr_u.drr_checksum.drr_checksum,
+ sizeof (drr->drr_u.drr_checksum.drr_checksum));
+ }
+
switch (drr->drr_type) {
case DRR_BEGIN:
{