From: Sage Weil Date: Fri, 9 Dec 2016 02:24:08 +0000 (-0600) Subject: mon/OSDMonitor: do not use PGMap to check pg existence X-Git-Tag: v12.0.0~338^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a2ad2d91fffacab6a126483e71e58468bcc30cd8;p=ceph.git mon/OSDMonitor: do not use PGMap to check pg existence Signed-off-by: Sage Weil --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index ee87f14e78b9..f0d283a0fce3 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -6624,8 +6624,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, err = -EINVAL; goto reply; } - PGMap& pg_map = mon->pgmon()->pg_map; - if (!pg_map.pg_stat.count(pgid)) { + if (!osdmap.pg_exists(pgid)) { ss << "pg " << pgid << " does not exist"; err = -ENOENT; goto reply; diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index ddbfbb8d67ce..382abfc4d007 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -611,6 +611,11 @@ public: return pool->get_pg_num(); } + bool pg_exists(pg_t pgid) const { + const pg_pool_t *p = get_pg_pool(pgid.pool()); + return p && pgid.ps() < p->get_pg_num(); + } + private: /// pg -> (raw osd list) int _pg_to_raw_osds(