From: Sage Weil Date: Thu, 13 Apr 2017 17:30:41 +0000 (-0400) Subject: mon/OSDMonitor: fix creating pg trimming during upgrade X-Git-Tag: v12.0.2~63^2~4 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=7959760d911d2ca64f3ca2b0cc972b804bbf8631;p=ceph-ci.git mon/OSDMonitor: fix creating pg trimming during upgrade The creating pgs are in the PGMap with the CREATING state bit set. Signed-off-by: Sage Weil --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 473a64a1e03..076edbfd927 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -1396,11 +1396,17 @@ void OSDMonitor::encode_pending(MonitorDBStore::TransactionRef t) void OSDMonitor::trim_creating_pgs(creating_pgs_t* creating_pgs, const PGMap& pgm) { - for (auto& pg : pgm.pg_stat) { - auto created = creating_pgs->pgs.find(pg.first); - if (created != creating_pgs->pgs.end()) { - creating_pgs->pgs.erase(created); - creating_pgs->created_pools.insert(pg.first.pool()); + auto p = creating_pgs->pgs.begin(); + while (p != creating_pgs->pgs.end()) { + auto q = pgm.pg_stat.find(p->first); + if (q != pgm.pg_stat.end() && + !(q->second.state & PG_STATE_CREATING)) { + dout(20) << __func__ << " pgmap shows " << p->first << " is created" + << dendl; + p = creating_pgs->pgs.erase(p); + creating_pgs->created_pools.insert(q->first.pool()); + } else { + ++p; } } }