From: Samuel Just Date: Wed, 16 Jan 2013 22:21:47 +0000 (-0800) Subject: osdmaptool: allow user to specify pool for test-map-object X-Git-Tag: v0.57~187 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=85eb8e382a26dfc53df36ae1a473185608b282aa;p=ceph.git osdmaptool: allow user to specify pool for test-map-object Fixes: #3820 Backport: bobtail Signed-off-by: Samuel Just Reviewed-by: Gregory Farnum --- diff --git a/src/osdmaptool.cc b/src/osdmaptool.cc index d367c36bf18a..6df7eb038c31 100644 --- a/src/osdmaptool.cc +++ b/src/osdmaptool.cc @@ -35,6 +35,8 @@ void usage() cout << " --export-crush write osdmap's crush map to " << std::endl; cout << " --import-crush replace osdmap's crush map with " << std::endl; cout << " --test-map-pg map a pgid to osds" << std::endl; + cout << " --test-map-object [--pool ] map an object to osds" + << std::endl; exit(1); } @@ -66,6 +68,7 @@ int main(int argc, const char **argv) bool test_crush = false; int range_first = -1; int range_last = -1; + int pool = 0; std::string val; std::ostringstream err; @@ -112,6 +115,7 @@ int main(int argc, const char **argv) test_crush = true; } else if (ceph_argparse_withint(args, i, &range_first, &err, "--range_first", (char*)NULL)) { } else if (ceph_argparse_withint(args, i, &range_last, &err, "--range_last", (char*)NULL)) { + } else if (ceph_argparse_withint(args, i, &pool, &err, "--pool", (char*)NULL)) { } else { ++i; } @@ -242,11 +246,14 @@ int main(int argc, const char **argv) if (!test_map_object.empty()) { object_t oid(test_map_object); - ceph_object_layout ol = osdmap.make_object_layout(oid, 0); + if (!osdmap.have_pg_pool(pool)) { + cerr << "There is no pool " << pool << std::endl; + exit(1); + } + object_locator_t loc(pool); + pg_t raw_pgid = osdmap.object_locator_to_pg(oid, loc); + pg_t pgid = osdmap.raw_pg_to_pg(raw_pgid); - pg_t pgid; - pgid = ol.ol_pgid; - vector acting; osdmap.pg_to_acting_osds(pgid, acting); cout << " object '" << oid