]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osdmaptool: fix wrong test_map_pgs_dump_all output 22280/head
authorhuangjun <huangjun@xsky.com>
Mon, 28 May 2018 13:44:36 +0000 (21:44 +0800)
committerhuangjun <huangjun@xsky.com>
Mon, 28 May 2018 13:44:36 +0000 (21:44 +0800)
Signed-off-by: huangjun <huangjun@xsky.com>
src/tools/osdmaptool.cc

index faf1f750fb8ad2ac1b2c17c1b9e0064032939cf7..8faad6c6aaaa52a1067c7af1c301b25c5e7a079d 100644 (file)
@@ -491,6 +491,7 @@ int main(int argc, const char **argv)
     vector<int> first_count(n, 0);
     vector<int> primary_count(n, 0);
     vector<int> 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) {