On 2012年06月21日 15:37, lvro...@linux.vnet.ibm.com wrote:
From: lvroyce<lvro...@linux.vnet.ibm.com>

virDomainBlockStatsFlags can't collect total_time_ns for read/write/flush
because of key typo when retriveing from qemu cmd result

Signed-off-by: lvroyce<lvro...@linux.vnet.ibm.com>
---
  src/qemu/qemu_monitor_json.c |   24 ++++++++++++------------
  src/qemu/qemu_monitor_text.c |   18 +++++++++---------
  2 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 7d2da21..7eb9529 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -1710,12 +1710,12 @@ int qemuMonitorJSONGetBlockStatsInfo(qemuMonitorPtr mon,
              goto cleanup;
          }
          if (rd_total_times&&
-            virJSONValueObjectHasKey(stats, "rd_total_times_ns")&&
-            (virJSONValueObjectGetNumberLong(stats, "rd_total_times_ns",
+            virJSONValueObjectHasKey(stats, "rd_total_time_ns")&&
+            (virJSONValueObjectGetNumberLong(stats, "rd_total_time_ns",
                                               rd_total_times)<  0)) {
              qemuReportError(VIR_ERR_INTERNAL_ERROR,
                              _("cannot read %s statistic"),
-                            "rd_total_times_ns");
+                            "rd_total_time_ns");
              goto cleanup;
          }
          if (virJSONValueObjectGetNumberLong(stats, "wr_bytes", wr_bytes)<  0) 
{
@@ -1731,12 +1731,12 @@ int qemuMonitorJSONGetBlockStatsInfo(qemuMonitorPtr mon,
              goto cleanup;
          }
          if (wr_total_times&&
-            virJSONValueObjectHasKey(stats, "wr_total_times_ns")&&
-            (virJSONValueObjectGetNumberLong(stats, "wr_total_times_ns",
+            virJSONValueObjectHasKey(stats, "wr_total_time_ns")&&
+            (virJSONValueObjectGetNumberLong(stats, "wr_total_time_ns",
                                               wr_total_times)<  0)) {
              qemuReportError(VIR_ERR_INTERNAL_ERROR,
                              _("cannot read %s statistic"),
-                            "wr_total_times_ns");
+                            "wr_total_time_ns");
              goto cleanup;
          }
          if (flush_req&&
@@ -1749,12 +1749,12 @@ int qemuMonitorJSONGetBlockStatsInfo(qemuMonitorPtr mon,
              goto cleanup;
          }
          if (flush_total_times&&
-            virJSONValueObjectHasKey(stats, "flush_total_times_ns")&&
-            (virJSONValueObjectGetNumberLong(stats, "flush_total_times_ns",
+            virJSONValueObjectHasKey(stats, "flush_total_time_ns")&&
+            (virJSONValueObjectGetNumberLong(stats, "flush_total_time_ns",
                                              flush_total_times)<  0)) {
              qemuReportError(VIR_ERR_INTERNAL_ERROR,
                              _("cannot read %s statistic"),
-                            "flush_total_times_ns");
+                            "flush_total_time_ns");
              goto cleanup;
          }
      }
@@ -1822,12 +1822,12 @@ int 
qemuMonitorJSONGetBlockStatsParamsNumber(qemuMonitorPtr mon,

          if (STREQ(key, "rd_bytes") ||
              STREQ(key, "rd_operations") ||
-            STREQ(key, "rd_total_times_ns") ||
+            STREQ(key, "rd_total_time_ns") ||
              STREQ(key, "wr_bytes") ||
              STREQ(key, "wr_operations") ||
-            STREQ(key, "wr_total_times_ns") ||
+            STREQ(key, "wr_total_time_ns") ||
              STREQ(key, "flush_operations") ||
-            STREQ(key, "flush_total_times_ns")) {
+            STREQ(key, "flush_total_time_ns")) {
              num++;
          } else {
              /* wr_highest_offset is parsed by qemuMonitorJSONGetBlockExtent. 
*/
diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
index edb5dfd..086b06b 100644
--- a/src/qemu/qemu_monitor_text.c
+++ b/src/qemu/qemu_monitor_text.c
@@ -977,13 +977,13 @@ int qemuMonitorTextGetBlockStatsInfo(qemuMonitorPtr mon,
                      if (virStrToLong_ll (p,&dummy, 10, wr_req) == -1)
                          VIR_DEBUG ("error reading wr_req: %s", p);
                  } else if (rd_total_times&&
-                           STRPREFIX (p, "rd_total_times_ns=")) {
-                    p += strlen("rd_total_times_ns=");
+                           STRPREFIX (p, "rd_total_time_ns=")) {
+                    p += strlen("rd_total_time_ns=");
                      if (virStrToLong_ll (p,&dummy, 10, rd_total_times) == -1)
                          VIR_DEBUG ("error reading rd_total_times: %s", p);
                  } else if (wr_total_times&&
-                           STRPREFIX (p, "wr_total_times_ns=")) {
-                    p += strlen("wr_total_times_ns=");
+                           STRPREFIX (p, "wr_total_time_ns=")) {
+                    p += strlen("wr_total_time_ns=");
                      if (virStrToLong_ll (p,&dummy, 10, wr_total_times) == -1)
                          VIR_DEBUG ("error reading wr_total_times: %s", p);
                  } else if (flush_req&&
@@ -992,8 +992,8 @@ int qemuMonitorTextGetBlockStatsInfo(qemuMonitorPtr mon,
                      if (virStrToLong_ll (p,&dummy, 10, flush_req) == -1)
                          VIR_DEBUG ("error reading flush_req: %s", p);
                  } else if (flush_total_times&&
-                           STRPREFIX (p, "flush_total_times_ns=")) {
-                    p += strlen("flush_total_times_ns=");
+                           STRPREFIX (p, "flush_total_time_ns=")) {
+                    p += strlen("flush_total_time_ns=");
                      if (virStrToLong_ll (p,&dummy, 10, flush_total_times) == 
-1)
                          VIR_DEBUG ("error reading flush_total_times: %s", p);
                  } else {
@@ -1071,10 +1071,10 @@ int 
qemuMonitorTextGetBlockStatsParamsNumber(qemuMonitorPtr mon,
              STRPREFIX (p, " wr_bytes=") ||
              STRPREFIX (p, " rd_operations=") ||
              STRPREFIX (p, " wr_operations=") ||
-            STRPREFIX (p, " rd_total_times_ns=") ||
-            STRPREFIX (p, " wr_total_times_ns=") ||
+            STRPREFIX (p, " rd_total_time_ns=") ||
+            STRPREFIX (p, " wr_total_time_ns=") ||
              STRPREFIX (p, " flush_operations=") ||
-            STRPREFIX (p, " flush_total_times_ns=")) {
+            STRPREFIX (p, " flush_total_time_ns=")) {
              num++;
          } else {
              VIR_DEBUG ("unknown block stat near %s", p);


ACK, interesting, QEMU doc has bug to fix too then. E.g.

         {
            "device":"sd0",
            "stats":{
               "wr_highest_offset":0,
               "wr_bytes":0,
               "wr_operations":0,
               "rd_bytes":0,
               "rd_operations":0
               "flush_operations":0,
               "wr_total_times_ns":0
               "rd_total_times_ns":0
               "flush_total_times_ns":0
          }

Osier

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to