diff options
Diffstat (limited to 'module/zfs/spa.c')
-rw-r--r-- | module/zfs/spa.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/module/zfs/spa.c b/module/zfs/spa.c index 8bee15094..998ec3e54 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -3264,10 +3264,13 @@ spa_feature_stats_from_cache(spa_t *spa, nvlist_t *features) static void spa_add_feature_stats(spa_t *spa, nvlist_t *config) { - nvlist_t *features = spa->spa_feat_stats; + nvlist_t *features; ASSERT(spa_config_held(spa, SCL_CONFIG, RW_READER)); + mutex_enter(&spa->spa_feat_stats_lock); + features = spa->spa_feat_stats; + if (features != NULL) { spa_feature_stats_from_cache(spa, features); } else { @@ -3278,6 +3281,8 @@ spa_add_feature_stats(spa_t *spa, nvlist_t *config) VERIFY0(nvlist_add_nvlist(config, ZPOOL_CONFIG_FEATURE_STATS, features)); + + mutex_exit(&spa->spa_feat_stats_lock); } int |