]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/PGMap: restructure 'pg stat' formatted output 3230/head
authorSage Weil <sage@redhat.com>
Mon, 22 Dec 2014 14:41:25 +0000 (06:41 -0800)
committerSage Weil <sage@redhat.com>
Mon, 22 Dec 2014 14:41:25 +0000 (06:41 -0800)
The + character, which appears in state names, is not a valid XML token.

Signed-off-by: Sage Weil <sage@redhat.com>
PendingReleaseNotes
src/mon/PGMap.cc

index ce8cb7b3ef7ae61473780714cd94ea0a344dd56c..f94c98fb7fec0cee033aee3fdf4002459df5687c 100644 (file)
@@ -44,3 +44,8 @@ v0.90
   a bogus value (for example, when rados_watch() returns an error and
   handle is not defined).
 
+* The structure of the formatted 'pg stat' command is changed for the
+  portion that counts states by name to avoid using the '+' character
+  (which appears in state names) as part of the XML token (it is not
+  legal).
+
index af5f1f881f0e80b0d83945225fc48fbef25ac181..1d24c114ec81d231bcd03bc93ee3b6b97c23123f 100644 (file)
@@ -1272,12 +1272,16 @@ void PGMap::print_oneline_summary(Formatter *f, ostream *out) const
   std::stringstream ss;
 
   if (f)
-    f->open_object_section("num_pg_by_state");
+    f->open_array_section("num_pg_by_state");
   for (ceph::unordered_map<int,int>::const_iterator p = num_pg_by_state.begin();
        p != num_pg_by_state.end();
        ++p) {
-    if (f)
-      f->dump_unsigned(pg_state_string(p->first).c_str(), p->second);
+    if (f) {
+      f->open_object_section("state");
+      f->dump_string("name", pg_state_string(p->first));
+      f->dump_unsigned("num", p->second);
+      f->close_section();
+    }
     if (p != num_pg_by_state.begin())
       ss << ", ";
     ss << p->second << " " << pg_state_string(p->first);