]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mon: pgstat: expose the full pg_stat map to remove a get_pg_map() call
authorGreg Farnum <gfarnum@redhat.com>
Fri, 5 May 2017 20:37:21 +0000 (13:37 -0700)
committerSage Weil <sage@redhat.com>
Fri, 2 Jun 2017 16:59:42 +0000 (12:59 -0400)
Signed-off-by: Greg Farnum <gfarnum@redhat.com>
src/mon/OSDMonitor.cc
src/mon/OSDMonitor.h
src/mon/PGStatService.h

index 184df66331f86cadd76f9c5b6a595578f0919a6e..4de827ad977d9413733b4a00e4fb0895350c48d4 100644 (file)
@@ -1304,7 +1304,7 @@ void OSDMonitor::encode_pending(MonitorDBStore::TransactionRef t)
     if (osdmap.require_osd_release < CEPH_RELEASE_LUMINOUS) {
       dout(7) << __func__ << " in the middle of upgrading, "
              << " trimming pending creating_pgs using pgmap" << dendl;
-      trim_creating_pgs(&pending_creatings, mon->pgservice->get_pg_map());
+      trim_creating_pgs(&pending_creatings, *mon->pgservice->get_pg_stat());
     }
     bufferlist creatings_bl;
     ::encode(pending_creatings, creatings_bl);
@@ -1313,12 +1313,12 @@ void OSDMonitor::encode_pending(MonitorDBStore::TransactionRef t)
 }
 
 void OSDMonitor::trim_creating_pgs(creating_pgs_t* creating_pgs,
-                                  const PGMap& pgm)
+                                  const ceph::unordered_map<pg_t,pg_stat_t>& pg_stat)
 {
   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() &&
+    auto q = pg_stat.find(p->first);
+    if (q != pg_stat.end() &&
        !(q->second.state & PG_STATE_CREATING)) {
       dout(20) << __func__ << " pgmap shows " << p->first << " is created"
               << dendl;
index fe1afa225479c19c1e749ef40375bc6ef2f62a42..992ecdb2d012011947a2c2a76ad0976501b8ca0a 100644 (file)
@@ -452,7 +452,8 @@ private:
   std::mutex creating_pgs_lock;
 
   creating_pgs_t update_pending_pgs(const OSDMap::Incremental& inc);
-  void trim_creating_pgs(creating_pgs_t *creating_pgs, const PGMap& pgm);
+  void trim_creating_pgs(creating_pgs_t *creating_pgs,
+                        const ceph::unordered_map<pg_t,pg_stat_t>& pgm);
   unsigned scan_for_creating_pgs(
     const mempool::osdmap::map<int64_t,pg_pool_t>& pools,
     const mempool::osdmap::set<int64_t>& removed_pools,
index 371526f4b503ef844431797a68c24ae5524ea732..574b7846ebe2a6378c52bd9ff5467c3083d88c8e 100644 (file)
@@ -46,6 +46,7 @@ public:
   virtual OSDStatIter osd_stat_iter_end() const = 0;
   virtual const osd_stat_t *get_osd_stat(int osd) const = 0;
   virtual const ceph::unordered_map<int32_t,osd_stat_t> *get_osd_stat() const = 0;
+  virtual const ceph::unordered_map<pg_t,pg_stat_t> *get_pg_stat() const = 0;
   virtual float get_full_ratio() const = 0;
   virtual float get_nearfull_ratio() const = 0;
   virtual bool have_creating_pgs() const = 0;
@@ -126,7 +127,9 @@ public:
   const ceph::unordered_map<int32_t,osd_stat_t> *get_osd_stat() const {
     return &parent.osd_stat;
   }
-
+  const ceph::unordered_map<pg_t,pg_stat_t> *get_pg_stat() const {
+    return &parent.pg_stat;
+  }
   float get_full_ratio() const { return parent.full_ratio; }
   float get_nearfull_ratio() const { return parent.nearfull_ratio; }