From: Greg Farnum Date: Fri, 5 May 2017 20:37:21 +0000 (-0700) Subject: mon: pgstat: expose the full pg_stat map to remove a get_pg_map() call X-Git-Tag: ses5-milestone6~8^2~19^2~109 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e7830b95d63efb10753bafff4d7a2be94cf764d7;p=ceph.git mon: pgstat: expose the full pg_stat map to remove a get_pg_map() call Signed-off-by: Greg Farnum --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 184df66331f..4de827ad977 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -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_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; diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index fe1afa22547..992ecdb2d01 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -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& pgm); unsigned scan_for_creating_pgs( const mempool::osdmap::map& pools, const mempool::osdmap::set& removed_pools, diff --git a/src/mon/PGStatService.h b/src/mon/PGStatService.h index 371526f4b50..574b7846ebe 100644 --- a/src/mon/PGStatService.h +++ b/src/mon/PGStatService.h @@ -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 *get_osd_stat() const = 0; + virtual const ceph::unordered_map *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 *get_osd_stat() const { return &parent.osd_stat; } - + const ceph::unordered_map *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; }