render / rpms / libvirt

Forked from rpms/libvirt 9 months ago
Clone
9119d9
From 4dc81b3be7488e24a61358e97c7a19faa27c9ed2 Mon Sep 17 00:00:00 2001
9119d9
Message-Id: <4dc81b3be7488e24a61358e97c7a19faa27c9ed2@dist-git>
9119d9
From: Michal Privoznik <mprivozn@redhat.com>
9119d9
Date: Wed, 17 Dec 2014 03:09:03 -0700
9119d9
Subject: [PATCH] qemuMonitorJSONBlockStatsUpdateCapacity: Don't skip disks
9119d9
9119d9
https://bugzilla.redhat.com/show_bug.cgi?id=1041569
9119d9
9119d9
The function queries the block devices visible to qemu
9119d9
('query-block') and parses the qemu's output. The info is
9119d9
returned in a hash table which is expected to be pre-filled by
9119d9
qemuMonitorJSONGetAllBlockStatsInfo(). However, in the next patch
9119d9
we are not going to call the latter function at all, so we should
9119d9
make the former function add devices into the hash table if not
9119d9
found there.
9119d9
9119d9
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
9119d9
(cherry picked from commit a714533b2bd2de81b9319bb753e74cc9210ca647)
9119d9
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9119d9
---
9119d9
 src/qemu/qemu_monitor_json.c | 14 ++++++++++----
9119d9
 1 file changed, 10 insertions(+), 4 deletions(-)
9119d9
9119d9
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
9119d9
index 34fb91f..3cf67aa 100644
9119d9
--- a/src/qemu/qemu_monitor_json.c
9119d9
+++ b/src/qemu/qemu_monitor_json.c
9119d9
@@ -2032,15 +2032,21 @@ int qemuMonitorJSONBlockStatsUpdateCapacity(qemuMonitorPtr mon,
9119d9
         if (STRPREFIX(dev_name, QEMU_DRIVE_HOST_PREFIX))
9119d9
             dev_name += strlen(QEMU_DRIVE_HOST_PREFIX);
9119d9
 
9119d9
-        /* ignore missing info */
9119d9
-        if (!(bstats = virHashLookup(stats, dev_name)))
9119d9
-            continue;
9119d9
-
9119d9
         /* drive may be empty */
9119d9
         if (!(inserted = virJSONValueObjectGet(dev, "inserted")) ||
9119d9
             !(image = virJSONValueObjectGet(inserted, "image")))
9119d9
             continue;
9119d9
 
9119d9
+        if (!(bstats = virHashLookup(stats, dev_name))) {
9119d9
+            if (VIR_ALLOC(bstats) < 0)
9119d9
+                goto cleanup;
9119d9
+
9119d9
+            if (virHashAddEntry(stats, dev_name, bstats) < 0) {
9119d9
+                VIR_FREE(bstats);
9119d9
+                goto cleanup;
9119d9
+            }
9119d9
+        }
9119d9
+
9119d9
         if (virJSONValueObjectGetNumberUlong(image, "virtual-size",
9119d9
                                              &bstats->capacity) < 0)
9119d9
             continue;
9119d9
-- 
9119d9
2.2.0
9119d9