From 21356f307b919e7367ae92532bf5ddb32815f6da Mon Sep 17 00:00:00 2001 From: huangjun Date: Mon, 28 May 2018 21:44:36 +0800 Subject: [PATCH] osdmaptool: fix wrong test_map_pgs_dump_all output Signed-off-by: huangjun --- src/tools/osdmaptool.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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) { -- 2.39.5