diff options
author | Tom Caputi <[email protected]> | 2017-10-13 13:09:04 -0400 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-08-15 09:48:49 -0700 |
commit | d9c460a0b659c044d4397b7405712f2c9450d3c4 (patch) | |
tree | 973b92b7f835540f5ee722b56ff838828fd53116 /include/sys/dmu_send.h | |
parent | fe8a7982ca90c3c9b8a09ec33f032527d7034a7b (diff) |
Added encryption support for zfs recv -o / -x
One small integration that was absent from b52563 was
support for zfs recv -o / -x with regards to encryption
parameters. The main use cases of this are as follows:
* Receiving an unencrypted stream as encrypted without
needing to create a "dummy" encrypted parent so that
encryption can be inheritted.
* Allowing users to change their keylocation on receive,
so long as the receiving dataset is an encryption root.
* Allowing users to explicitly exclude or override the
encryption property from an unencrypted properties stream,
allowing it to be received as encrypted.
* Receiving a recursive heirarchy of unencrypted datasets,
encrypting the top-level one and forcing all children to
inherit the encryption.
Reviewed-by: Jorgen Lundman <[email protected]>
Reviewed by: Matthew Ahrens <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Richard Elling <[email protected]>
Signed-off-by: Tom Caputi <[email protected]>
Closes #7650
Diffstat (limited to 'include/sys/dmu_send.h')
-rw-r--r-- | include/sys/dmu_send.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/include/sys/dmu_send.h b/include/sys/dmu_send.h index c0b2aafdb..396710470 100644 --- a/include/sys/dmu_send.h +++ b/include/sys/dmu_send.h @@ -30,6 +30,7 @@ #define _DMU_SEND_H #include <sys/inttypes.h> +#include <sys/dsl_crypt.h> #include <sys/spa.h> struct vnode; @@ -72,8 +73,9 @@ typedef struct dmu_recv_cookie { } dmu_recv_cookie_t; int dmu_recv_begin(char *tofs, char *tosnap, - struct dmu_replay_record *drr_begin, - boolean_t force, boolean_t resumable, char *origin, dmu_recv_cookie_t *drc); + struct dmu_replay_record *drr_begin, boolean_t force, boolean_t resumable, + nvlist_t *localprops, nvlist_t *hidden_args, char *origin, + dmu_recv_cookie_t *drc); int dmu_recv_stream(dmu_recv_cookie_t *drc, struct vnode *vp, offset_t *voffp, int cleanup_fd, uint64_t *action_handlep); int dmu_recv_end(dmu_recv_cookie_t *drc, void *owner); |