aboutsummaryrefslogtreecommitdiff
path: root/module/zfs/dsl_crypt.c
diff options
context:
space:
mode:
authorTom Caputi <tcaputi@datto.com>2019-10-30 18:27:28 +0000
committerBrian Behlendorf <behlendorf1@llnl.gov>2019-10-30 18:27:28 +0000
commitbae11ba8dc1dd992643dd0ab0b5cc3b3cc197fe9 (patch)
tree2916425363affd7edb4862b81ebff1afa539a7df /module/zfs/dsl_crypt.c
parentd46f0deb035bd26840dc6284fc6e1bb392097c92 (diff)
downloadsrc-bae11ba8dc1dd992643dd0ab0b5cc3b3cc197fe9.tar.gz
src-bae11ba8dc1dd992643dd0ab0b5cc3b3cc197fe9.zip
Diffstat (limited to 'module/zfs/dsl_crypt.c')
-rw-r--r--module/zfs/dsl_crypt.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/module/zfs/dsl_crypt.c b/module/zfs/dsl_crypt.c
index 1545af53af70..162a3613c282 100644
--- a/module/zfs/dsl_crypt.c
+++ b/module/zfs/dsl_crypt.c
@@ -1430,6 +1430,7 @@ spa_keystore_change_key_sync_impl(uint64_t rddobj, uint64_t ddobj,
uint64_t new_rddobj, dsl_wrapping_key_t *wkey, boolean_t skip,
dmu_tx_t *tx)
{
+ int ret;
zap_cursor_t *zc;
zap_attribute_t *za;
dsl_pool_t *dp = dmu_tx_pool(tx);
@@ -1448,12 +1449,15 @@ spa_keystore_change_key_sync_impl(uint64_t rddobj, uint64_t ddobj,
return;
}
+ ret = dsl_dir_get_encryption_root_ddobj(dd, &curr_rddobj);
+ VERIFY(ret == 0 || ret == ENOENT);
+
/*
* Stop recursing if this dsl dir didn't inherit from the root
* or if this dd is a clone.
*/
- VERIFY0(dsl_dir_get_encryption_root_ddobj(dd, &curr_rddobj));
- if (!skip && (curr_rddobj != rddobj || dsl_dir_is_clone(dd))) {
+ if (ret == ENOENT ||
+ (!skip && (curr_rddobj != rddobj || dsl_dir_is_clone(dd)))) {
dsl_dir_rele(dd, FTAG);
return;
}