Merge pull request #31560 from rosinL/wip-fix-incorrect-pg-pool-sum

mon/PGMap: fix incorrect pg_pool_sum when delete pool

Reviewed-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
Kefu Chai 2019-11-17 00:54:25 +08:00 committed by GitHub
commit 4069bbfd2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1175,14 +1175,16 @@ void PGMap::apply_incremental(CephContext *cct, const Incremental& inc)
auto pool_statfs_iter =
pool_statfs.find(std::make_pair(update_pool, update_osd));
pool_stat_t &pool_sum_ref = pg_pool_sum[update_pool];
if (pool_statfs_iter == pool_statfs.end()) {
pool_statfs.emplace(std::make_pair(update_pool, update_osd), statfs_inc);
} else {
pool_sum_ref.sub(pool_statfs_iter->second);
pool_statfs_iter->second = statfs_inc;
if (pg_pool_sum.count(update_pool)) {
pool_stat_t &pool_sum_ref = pg_pool_sum[update_pool];
if (pool_statfs_iter == pool_statfs.end()) {
pool_statfs.emplace(std::make_pair(update_pool, update_osd), statfs_inc);
} else {
pool_sum_ref.sub(pool_statfs_iter->second);
pool_statfs_iter->second = statfs_inc;
}
pool_sum_ref.add(statfs_inc);
}
pool_sum_ref.add(statfs_inc);
}
for (auto p = inc.get_osd_stat_updates().begin();