From: huangjun Date: Mon, 28 May 2018 13:44:36 +0000 (+0800) Subject: osdmaptool: fix wrong test_map_pgs_dump_all output X-Git-Tag: v14.0.1~1249^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=21356f307b919e7367ae92532bf5ddb32815f6da;p=ceph.git osdmaptool: fix wrong test_map_pgs_dump_all output Signed-off-by: huangjun --- diff --git a/src/tools/osdmaptool.cc b/src/tools/osdmaptool.cc index faf1f750fb8ad..8faad6c6aaaa5 100644 --- a/src/tools/osdmaptool.cc +++ b/src/tools/osdmaptool.cc @@ -491,6 +491,7 @@ int main(int argc, const char **argv) vector first_count(n, 0); vector primary_count(n, 0); vector size(30, 0); + int max_size = 0; if (test_random) srand(getpid()); auto& pools = osdmap.get_pools(); @@ -516,11 +517,15 @@ int main(int argc, const char **argv) } else if (test_map_pgs_dump_all) { osdmap.pg_to_raw_osds(pgid, &raw, &calced_primary); osdmap.pg_to_up_acting_osds(pgid, &up, &up_primary, - &acting, &acting_primary); + &acting, &acting_primary); + osds = acting; + primary = acting_primary; } else { osdmap.pg_to_acting_osds(pgid, &osds, &primary); } size[osds.size()]++; + if ((unsigned)max_size < osds.size()) + max_size = osds.size(); if (test_map_pgs_dump) { cout << pgid << "\t" << osds << "\t" << primary << std::endl; @@ -597,8 +602,9 @@ int main(int argc, const char **argv) if (max_osd >= 0) cout << " max osd." << max_osd << " " << count[max_osd] << std::endl; - for (int i=0; i<4; i++) { - cout << "size " << i << "\t" << size[i] << std::endl; + for (int i=0; i<=max_size; i++) { + if (size[i]) + cout << "size " << i << "\t" << size[i] << std::endl; } } if (test_crush) {