From 458bb8c8a1b81f392a4cf7bf5eb562aea3cdd1bf Mon Sep 17 00:00:00 2001
From: manfromafar <jonsonb10@gmail.com>
Date: Sun, 7 Mar 2021 10:39:16 -0700
Subject: [PATCH] Clarify compressed zfs send/recv behavior

Docs for send and receive do not explain behavior when sending a
compressed stream then receiving on a host that overrides compression
with -o compress=value.

The data from the send stream is written as it was from the send is
the compressed form but the compression algorithm set on the receiver
is the overridden version which causes some confusion as to what
algorithm was actually used.

Updated man docs to clarify behavior

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed By: Allan Jude <allanjude@freebsd.org>
Signed-off-by: manfromafar <manfromafar@outlook.com>
Closes #11690
---
 man/man8/zfs-receive.8 | 10 ++++++++++
 man/man8/zfs-send.8    |  7 ++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/man/man8/zfs-receive.8 b/man/man8/zfs-receive.8
index ed5cbbdf0b..982e3b9616 100644
--- a/man/man8/zfs-receive.8
+++ b/man/man8/zfs-receive.8
@@ -261,6 +261,16 @@ causes the property to be inherited by all descendant datasets, as through
 was run on any descendant datasets that have this property set on the
 sending system.
 .Pp
+If the send stream was sent with 
+.Fl c
+then overriding the 
+.Sy compression 
+property will have no affect on received data but the  
+.Sy compression
+property will be set. To have the data recompressed on receive remove the 
+.Fl c 
+flag from the send stream.  
+.Pp
 Any editable property can be set at receive time. Set-once properties bound
 to the received data, such as
 .Sy normalization
diff --git a/man/man8/zfs-send.8 b/man/man8/zfs-send.8
index 1a241a52d5..91c1484c73 100644
--- a/man/man8/zfs-send.8
+++ b/man/man8/zfs-send.8
@@ -189,7 +189,12 @@ feature is enabled on the sending system but the
 option is not supplied in conjunction with
 .Fl c ,
 then the data will be decompressed before sending so it can be split into
-smaller block sizes.
+smaller block sizes. Streams sent with 
+.Fl c
+will not have their data recompressed on the receiver side using
+.Fl o compress=value.
+The data will stay compressed as it was from the sender. The new compression
+property will be set for future data. 
 .It Fl w, -raw
 For encrypted datasets, send data exactly as it exists on disk. This allows
 backups to be taken even if encryption keys are not currently loaded. The