mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Better user experience for errata 4
This patch attempts to address some user concerns that have arisen since errata 4 was introduced. * The errata warning has been made less scary for users without any encrypted datasets. * The errata warning now clears itself without a pool reimport if the bookmark_v2 feature is enabled and no encrypted datasets exist. * It is no longer possible to create new encrypted datasets without enabling the bookmark_v2 feature, thus helping to ensure that the errata is resolved. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Tom Caputi <tcaputi@datto.com> Issue ##8308 Closes #8504
This commit is contained in:
committed by
Brian Behlendorf
parent
98310e5d1a
commit
eaed840542
@@ -1837,6 +1837,13 @@ dmu_objset_create_crypt_check(dsl_dir_t *parentdd, dsl_crypto_params_t *dcp,
|
||||
return (SET_ERROR(EOPNOTSUPP));
|
||||
}
|
||||
|
||||
/* Check for errata #4 (encryption enabled, bookmark_v2 disabled) */
|
||||
if (parentdd != NULL &&
|
||||
!spa_feature_is_enabled(parentdd->dd_pool->dp_spa,
|
||||
SPA_FEATURE_BOOKMARK_V2)) {
|
||||
return (SET_ERROR(EOPNOTSUPP));
|
||||
}
|
||||
|
||||
/* handle inheritance */
|
||||
if (dcp->cp_wkey == NULL) {
|
||||
ASSERT3P(parentdd, !=, NULL);
|
||||
|
||||
@@ -376,6 +376,19 @@ feature_enable_sync(spa_t *spa, zfeature_info_t *feature, dmu_tx_t *tx)
|
||||
spa->spa_feat_enabled_txg_obj, feature->fi_guid,
|
||||
sizeof (uint64_t), 1, &enabling_txg, tx));
|
||||
}
|
||||
|
||||
/*
|
||||
* Errata #4 is mostly a problem with encrypted datasets, but it
|
||||
* is also a problem where the old encryption feature did not
|
||||
* depend on the bookmark_v2 feature. If the pool does not have
|
||||
* any encrypted datasets we can resolve this issue simply by
|
||||
* enabling this dependency.
|
||||
*/
|
||||
if (spa->spa_errata == ZPOOL_ERRATA_ZOL_8308_ENCRYPTION &&
|
||||
spa_feature_is_enabled(spa, SPA_FEATURE_ENCRYPTION) &&
|
||||
!spa_feature_is_active(spa, SPA_FEATURE_ENCRYPTION) &&
|
||||
feature->fi_feature == SPA_FEATURE_BOOKMARK_V2)
|
||||
spa->spa_errata = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user