]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: PGMonitor: check if pg exists when handling 'pg map <PG>'
authorJoao Eduardo Luis <joao.luis@inktank.com>
Wed, 21 Nov 2012 17:48:25 +0000 (17:48 +0000)
committerJoao Eduardo Luis <joao.luis@inktank.com>
Fri, 23 Nov 2012 19:12:48 +0000 (19:12 +0000)
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
src/mon/PGMonitor.cc

index 2bdfbc4b5ebc8130404a527726a28ef55071ccaa..dcf9380613bf47c2d50b8f62e2e395054eecf449 100644 (file)
@@ -991,12 +991,17 @@ bool PGMonitor::preprocess_command(MMonCommand *m)
       r = -EINVAL;
       if (pgid.parse(m->cmd[2].c_str())) {
        vector<int> up, acting;
-       pg_t mpgid = mon->osdmon()->osdmap.raw_pg_to_pg(pgid);
-       mon->osdmon()->osdmap.pg_to_up_acting_osds(pgid, up, acting);
-       ss << "osdmap e" << mon->osdmon()->osdmap.get_epoch()
-          << " pg " << pgid << " (" << mpgid << ")"
-          << " -> up " << up << " acting " << acting;
-       r = 0;
+       if (mon->osdmon()->osdmap.have_pg_pool(pgid.pool())) {
+         pg_t mpgid = mon->osdmon()->osdmap.raw_pg_to_pg(pgid);
+         mon->osdmon()->osdmap.pg_to_up_acting_osds(pgid, up, acting);
+         ss << "osdmap e" << mon->osdmon()->osdmap.get_epoch()
+           << " pg " << pgid << " (" << mpgid << ")"
+           << " -> up " << up << " acting " << acting;
+         r = 0;
+       } else {
+         r = -ENOENT;
+         ss << "pg '" << m->cmd[2] << "' does not exist";
+       }
       } else
        ss << "invalid pgid '" << m->cmd[2] << "'";
     }