From e7830b95d63efb10753bafff4d7a2be94cf764d7 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Fri, 5 May 2017 13:37:21 -0700 Subject: [PATCH] mon: pgstat: expose the full pg_stat map to remove a get_pg_map() call Signed-off-by: Greg Farnum --- src/mon/OSDMonitor.cc | 8 ++++---- src/mon/OSDMonitor.h | 3 ++- src/mon/PGStatService.h | 5 ++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 184df66331f86..4de827ad977d9 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 fe1afa225479c..992ecdb2d0120 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 371526f4b503e..574b7846ebe2a 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; } -- 2.39.5