From c5479ec29ec906ac135b77d70214e8fe42b32198 Mon Sep 17 00:00:00 2001 From: Aleksei Gutikov Date: Mon, 30 Mar 2020 15:27:45 +0300 Subject: [PATCH] mgr: decrease pool stats if pg was removed After merge of placement groups resulting pg contains objects from itself and merged one. PGMap::apply_incremental treat this growth as pool stats delta, but forget to decrease stats for removed pg. Fixes: https://tracker.ceph.com/issues/44815 Signed-off-by: Aleksei Gutikov (cherry picked from commit 6090acdae4495e11f117df2330b579744eeada2a) --- src/mon/PGMap.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index 1488bcb5c8e7..4d5950fc48a0 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -1213,6 +1213,13 @@ void PGMap::apply_incremental(CephContext *cct, const Incremental& inc) bool pool_erased = false; if (s != pg_stat.end()) { pool_erased = stat_pg_sub(removed_pg, s->second); + + // decrease pool stats if pg was removed + auto pool_stats_it = pg_pool_sum.find(removed_pg.pool()); + if (pool_stats_it != pg_pool_sum.end()) { + pool_stats_it->second.sub(s->second); + } + pg_stat.erase(s); if (pool_erased) { deleted_pools.insert(removed_pg.pool()); -- 2.47.3