From 28b1fc80c48b5d0dc3b0751b602b2147a2881cb5 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 2 May 2012 15:32:17 -0700 Subject: [PATCH] mon: make 'osd map ' return pg and osd mapping This keeps coming up and is annoying to do manually. Fixes: #2141 Signed-off-by: Sage Weil Reviewed-by: Greg Farnum --- src/mon/OSDMonitor.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index c7f1564d98d03..14878c4821ebc 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -1544,6 +1544,25 @@ bool OSDMonitor::preprocess_command(MMonCommand *m) } else ss << "specify osd number or *"; } } + else if (m->cmd[1] == "map" && m->cmd.size() == 4) { + int64_t pool = osdmap.lookup_pg_pool_name(m->cmd[2].c_str()); + if (pool < 0) { + ss << "pool " << m->cmd[2] << " dne"; + r = -ENOENT; + } else { + object_locator_t oloc(pool); + object_t oid(m->cmd[3]); + pg_t pgid = osdmap.object_locator_to_pg(oid, oloc); + pg_t mpgid = osdmap.raw_pg_to_pg(pgid); + vector up, acting; + osdmap.pg_to_up_acting_osds(mpgid, up, acting); + ss << "osdmap e" << osdmap.get_epoch() + << " pool '" << m->cmd[2] << "' (" << pool << ") object '" << oid << "' ->" + << " pg " << pgid << " (" << mpgid << ")" + << " -> up " << up << " acting " << acting; + r = 0; + } + } else if ((m->cmd[1] == "scrub" || m->cmd[1] == "repair")) { if (m->cmd.size() <= 2) { r = -EINVAL; -- 2.39.5