]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: do not use PGMap to check pg existence
authorSage Weil <sage@redhat.com>
Fri, 9 Dec 2016 02:24:08 +0000 (20:24 -0600)
committerSage Weil <sage@redhat.com>
Mon, 19 Dec 2016 04:12:20 +0000 (23:12 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/OSDMonitor.cc
src/osd/OSDMap.h

index ee87f14e78b9c41e9833207fd6fea976f343ed56..f0d283a0fce396113c078c37b4af74e859194212 100644 (file)
@@ -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;
index ddbfbb8d67ce36a6f22713ff06f03781dc71841e..382abfc4d007b14f50ae8f43538fb03868a61b4c 100644 (file)
@@ -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(