]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: decrease pool stats if pg was removed 36667/head
authorAleksei Gutikov <aleksey.gutikov@synesis.ru>
Mon, 30 Mar 2020 12:27:45 +0000 (15:27 +0300)
committerNathan Cutler <ncutler@suse.com>
Sat, 15 Aug 2020 13:31:22 +0000 (15:31 +0200)
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>
(cherry picked from commit 6090acdae4495e11f117df2330b579744eeada2a)

src/mon/PGMap.cc

index 1488bcb5c8e74f7f6e79aacf4cd2aa953b6ce2fb..4d5950fc48a0851e0b6e9851b429d28e33f4a688 100644 (file)
@@ -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());