]> granicus.if.org Git - zfs/commit
Fix for #6706
authorTom Caputi <tcaputi@datto.com>
Tue, 3 Oct 2017 17:18:45 +0000 (13:18 -0400)
committerTom Caputi <tcaputi@datto.com>
Wed, 11 Oct 2017 20:58:39 +0000 (16:58 -0400)
commit2637dda8f80dbd49dd0512c74108ff977dfb8c7b
tree447d76fcae7248e918e6d82755ca9c1a1e1affef
parentb135b9f11ad15823d92f8ca3f40fcdd91690677d
Fix for #6706

This patch resolves an issue where raw sends would fail to send
encryption parameters if the wrapping key was unloaded and reloaded
before the data was sent and the dataset wass not an encryption root.
The code attempted to lookup the values from the wrapping key which
was not being initialized upon reload. This change forces the code to
lookup the correct value from the encryption root's DSL Crypto Key.
Unfortunately, this issue led to the on-disk DSL Crypto Key for some
non-encryption root datasets being left with zeroed out encryption
parameters. However, this should not present a problem since these
values are never looked at and are overrwritten upon changing keys.

This patch also fixes an issue where raw, resumable sends were not
being cleaned up appropriately if an invalid DSL Crypto Key was
received.

Signed-off-by: Tom Caputi <tcaputi@datto.com>
module/zfs/dmu_send.c
module/zfs/dsl_crypt.c