mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
Add missing checks for unsupported features
After 35ec517
it has become possible to import ZFS pools witn an
active org.illumos:edonr feature on FreeBSD, leading to a panic.
In addition, "zpool status" reported all pools without edonr
as upgradable and "zpool upgrade -v" reported edonr in the list
of upgradable features.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Signed-off-by: Martin Matuska <mm@FreeBSD.org>
Closes #11653
This commit is contained in:
parent
778fa36ee7
commit
03ef8f09e1
@ -9030,6 +9030,8 @@ zpool_do_upgrade(int argc, char **argv)
|
||||
"---------------\n");
|
||||
for (i = 0; i < SPA_FEATURES; i++) {
|
||||
zfeature_info_t *fi = &spa_feature_table[i];
|
||||
if (!fi->fi_zfs_mod_supported)
|
||||
continue;
|
||||
const char *ro =
|
||||
(fi->fi_flags & ZFEATURE_FLAG_READONLY_COMPAT) ?
|
||||
" (read-only compatible)" : "";
|
||||
|
@ -7592,6 +7592,9 @@ ztest_init(ztest_shared_t *zs)
|
||||
for (i = 0; i < SPA_FEATURES; i++) {
|
||||
char *buf;
|
||||
|
||||
if (!spa_feature_table[i].fi_zfs_mod_supported)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* 75% chance of using the log space map feature. We want ztest
|
||||
* to exercise both the code paths that use the log space map
|
||||
|
@ -482,6 +482,8 @@ check_status(nvlist_t *config, boolean_t isimport,
|
||||
return (ZPOOL_STATUS_COMPATIBILITY_ERR);
|
||||
for (i = 0; i < SPA_FEATURES; i++) {
|
||||
zfeature_info_t *fi = &spa_feature_table[i];
|
||||
if (!fi->fi_zfs_mod_supported)
|
||||
continue;
|
||||
if (pool_features[i] &&
|
||||
!nvlist_exists(feat, fi->fi_guid))
|
||||
return (ZPOOL_STATUS_FEAT_DISABLED);
|
||||
|
@ -100,6 +100,8 @@ zfeature_is_supported(const char *guid)
|
||||
|
||||
for (spa_feature_t i = 0; i < SPA_FEATURES; i++) {
|
||||
zfeature_info_t *feature = &spa_feature_table[i];
|
||||
if (!feature->fi_zfs_mod_supported)
|
||||
continue;
|
||||
if (strcmp(guid, feature->fi_guid) == 0)
|
||||
return (B_TRUE);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user