diff options
author | loli10K <[email protected]> | 2018-03-18 09:34:45 +0100 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-05-01 10:33:35 -0700 |
commit | 85ce3f4fd114cf3c7a77feb07b397d43b90d11c7 (patch) | |
tree | 44e954831ea4375a3cabc1c4615ac3e6738d8a1e /lib | |
parent | 6abf922574f39ad597ae122fa43d2fa811970720 (diff) |
Adopt pyzfs from ClusterHQ
This commit introduces several changes:
* Update LICENSE and project information
* Give a good PEP8 talk to existing Python source code
* Add RPM/DEB packaging for pyzfs
* Fix some outstanding issues with the existing pyzfs code caused by
changes in the ABI since the last time the code was updated
* Integrate pyzfs Python unittest with the ZFS Test Suite
* Add missing libzfs_core functions: lzc_change_key,
lzc_channel_program, lzc_channel_program_nosync, lzc_load_key,
lzc_receive_one, lzc_receive_resumable, lzc_receive_with_cmdprops,
lzc_receive_with_header, lzc_reopen, lzc_send_resume, lzc_sync,
lzc_unload_key, lzc_remap
Note: this commit slightly changes zfs_ioc_unload_key() ABI. This allow
to differentiate the case where we tried to unload a key on a
non-existing dataset (ENOENT) from the situation where a dataset has
no key loaded: this is consistent with the "change" case where trying
to zfs_ioc_change_key() from a dataset with no key results in EACCES.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: loli10K <[email protected]>
Closes #7230
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libzfs/libzfs_crypto.c | 4 | ||||
-rw-r--r-- | lib/libzfs_core/libzfs_core.c | 15 |
2 files changed, 14 insertions, 5 deletions
diff --git a/lib/libzfs/libzfs_crypto.c b/lib/libzfs/libzfs_crypto.c index 9ad0fae7d..0956466e2 100644 --- a/lib/libzfs/libzfs_crypto.c +++ b/lib/libzfs/libzfs_crypto.c @@ -1185,7 +1185,7 @@ zfs_crypto_unload_key(zfs_handle_t *zhp) if (keystatus == ZFS_KEYSTATUS_UNAVAILABLE) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Key already unloaded for '%s'."), zfs_get_name(zhp)); - ret = ENOENT; + ret = EACCES; goto error; } @@ -1198,7 +1198,7 @@ zfs_crypto_unload_key(zfs_handle_t *zhp) zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Permission denied.")); break; - case ENOENT: + case EACCES: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Key already unloaded for '%s'."), zfs_get_name(zhp)); diff --git a/lib/libzfs_core/libzfs_core.c b/lib/libzfs_core/libzfs_core.c index 42362e321..5a46042a4 100644 --- a/lib/libzfs_core/libzfs_core.c +++ b/lib/libzfs_core/libzfs_core.c @@ -546,6 +546,15 @@ lzc_get_holds(const char *snapname, nvlist_t **holdsp) * to contain DRR_WRITE_EMBEDDED records with drr_etype==BP_EMBEDDED_TYPE_DATA, * which the receiving system must support (as indicated by support * for the "embedded_data" feature). + * + * If "flags" contains LZC_SEND_FLAG_COMPRESS, the stream is generated by using + * compressed WRITE records for blocks which are compressed on disk and in + * memory. If the lz4_compress feature is active on the sending system, then + * the receiving system must have that feature enabled as well. + * + * If "flags" contains LZC_SEND_FLAG_RAW, the stream is generated, for encrypted + * datasets, by sending data exactly as it exists on disk. This allows backups + * to be taken even if encryption keys are not currently loaded. */ int lzc_send(const char *snapname, const char *from, int fd, @@ -1156,9 +1165,9 @@ lzc_channel_program_nosync(const char *pool, const char *program, /* * Performs key management functions * - * crypto_cmd should be a value from zfs_ioc_crypto_cmd_t. If the command - * specifies to load or change a wrapping key, the key should be specified in - * the hidden_args nvlist so that it is not logged + * crypto_cmd should be a value from dcp_cmd_t. If the command specifies to + * load or change a wrapping key, the key should be specified in the + * hidden_args nvlist so that it is not logged. */ int lzc_load_key(const char *fsname, boolean_t noop, uint8_t *wkeydata, |