]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: decrease pool stats if pg was removed 34289/head
authorAleksei Gutikov <aleksey.gutikov@synesis.ru>
Mon, 30 Mar 2020 12:27:45 +0000 (15:27 +0300)
committerAleksei Gutikov <aleksey.gutikov@synesis.ru>
Tue, 31 Mar 2020 06:12:40 +0000 (09:12 +0300)
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 <aleksey.gutikov@synesis.ru>
src/mon/PGMap.cc

index 1cfb85d11e142f876869670d7cc3124cc553c265..422d890df60cec3d7565c6f602a6fb18d35bded6 100644 (file)
@@ -1214,6 +1214,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());