Print this page
4171 clean up spa_feature_*() interfaces
4172 implement extensible_dataset feature for use by other zpool features
Reviewed by: Max Grossman <max.grossman@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>

@@ -1141,18 +1141,20 @@
  */
 
 void
 spa_activate_mos_feature(spa_t *spa, const char *feature)
 {
-        (void) nvlist_add_boolean(spa->spa_label_features, feature);
+        if (!nvlist_exists(spa->spa_label_features, feature)) {
+                fnvlist_add_boolean(spa->spa_label_features, feature);
         vdev_config_dirty(spa->spa_root_vdev);
+        }
 }
 
 void
 spa_deactivate_mos_feature(spa_t *spa, const char *feature)
 {
-        (void) nvlist_remove_all(spa->spa_label_features, feature);
+        if (nvlist_remove_all(spa->spa_label_features, feature) == 0)
         vdev_config_dirty(spa->spa_root_vdev);
 }
 
 /*
  * Rename a spa_t.