System information
| Type |
Version/Name |
| Distribution Name |
Debian |
| Distribution Version |
bookworm/testing |
| Kernel Version |
5.14.0-2 |
| Architecture |
amd64 |
| OpenZFS Version |
2.0.6-1 |
Describe the problem you're observing
I am trying to transfer an encrypted dataset to another pool using a raw send. Partially through this send, the receive side fails with an unclear error message.
The receiving system is also on 2.0.6, running Debian Bullseye on kernel 5.10.0-9.
Here are the commands that reproduce the issue reliably:
source# zfs send -Lcw -v tank/enc/private@zfs-auto-snap_monthly-2020-07-01-1152 | mbuffer -O 10.200.200.2:13337
dest# mbuffer -I 13337 | zfs receive -uv archive/dwight/tank/private
The dataset is about 1.3TB; at the 360GB mark, the receive reliably fails with the following error:
cannot receive new filesystem stream: invalid backup stream
Oddly, if you provide the -s flag to the recv (enable resume support) the error changes to this:
cannot receive new filesystem stream: kernel modules must be upgraded to receive this stream.
I tried sending the stream through zstreamdump, which did not complain. I also maximized debug logging, generated a resume token and tried resuming (right at whatever transaction caused the recv to fail), which generated these messages (gist). It's noisy; see line 1786 for when receive_object failed.
I don't know the exact steps to reproduce this problem with another dataset. Originally this dataset was on another pool in an unencrypted state. It was sent into the encrypted pool just fine, then I wanted to raw-send the newly-encrypted dataset offsite to another pool. It is at this point that I ran into this show-stopper.
See also the gist below which is the output of zstreamdump -vvv on the resumed send.
https://gist.github.com/putnam/3a467fdab6fe96ca048264c1bcd8a4b0
UPDATE: In the discussion below, I was able to shrink the affected dataset down to a ~70MB repro. See this comment for an attachment.
System information
Describe the problem you're observing
I am trying to transfer an encrypted dataset to another pool using a raw send. Partially through this send, the receive side fails with an unclear error message.
The receiving system is also on 2.0.6, running Debian Bullseye on kernel 5.10.0-9.
Here are the commands that reproduce the issue reliably:
The dataset is about 1.3TB; at the 360GB mark, the receive reliably fails with the following error:
Oddly, if you provide the -s flag to the recv (enable resume support) the error changes to this:
I tried sending the stream through zstreamdump, which did not complain. I also maximized debug logging, generated a resume token and tried resuming (right at whatever transaction caused the recv to fail), which generated these messages (gist). It's noisy; see line 1786 for when receive_object failed.
I don't know the exact steps to reproduce this problem with another dataset. Originally this dataset was on another pool in an unencrypted state. It was sent into the encrypted pool just fine, then I wanted to raw-send the newly-encrypted dataset offsite to another pool. It is at this point that I ran into this show-stopper.
See also the gist below which is the output of
zstreamdump -vvvon the resumed send.https://gist.github.com/putnam/3a467fdab6fe96ca048264c1bcd8a4b0
UPDATE: In the discussion below, I was able to shrink the affected dataset down to a ~70MB repro. See this comment for an attachment.