diff options
author | Joao Eduardo Luis <joao.luis@inktank.com> | 2012-11-21 17:48:25 +0000 |
---|---|---|
committer | Joao Eduardo Luis <joao.luis@inktank.com> | 2012-11-23 19:12:48 +0000 |
commit | 95e1fe8822c7cfd39e31f1c5c979cec0d380146e (patch) | |
tree | c77d71830b5075c837dc10cf848a5e521077ce51 | |
parent | ab8327fec05c9c6b96cae537ccf7fd09a9fca18b (diff) | |
download | ceph-95e1fe8822c7cfd39e31f1c5c979cec0d380146e.tar.gz |
mon: PGMonitor: check if pg exists when handling 'pg map <PG>'
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
-rw-r--r-- | src/mon/PGMonitor.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 2bdfbc4b5eb..dcf9380613b 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -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] << "'"; } |