qemuMonitorJSONBlockStatsUpdateCapacity: Don't skip disks

The function queries the block devices visible to qemu
('query-block') and parses the qemu's output. The info is
returned in a hash table which is expected to be pre-filled by
qemuMonitorJSONGetAllBlockStatsInfo(). However, in the next patch
we are not going to call the latter function at all, so we should
make the former function add devices into the hash table if not
found there.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Michal Privoznik 2014-12-01 15:31:51 +01:00
parent 5ab746b83a
commit a714533b2b

View File

@ -1889,15 +1889,21 @@ int qemuMonitorJSONBlockStatsUpdateCapacity(qemuMonitorPtr mon,
if (STRPREFIX(dev_name, QEMU_DRIVE_HOST_PREFIX)) if (STRPREFIX(dev_name, QEMU_DRIVE_HOST_PREFIX))
dev_name += strlen(QEMU_DRIVE_HOST_PREFIX); dev_name += strlen(QEMU_DRIVE_HOST_PREFIX);
/* ignore missing info */
if (!(bstats = virHashLookup(stats, dev_name)))
continue;
/* drive may be empty */ /* drive may be empty */
if (!(inserted = virJSONValueObjectGet(dev, "inserted")) || if (!(inserted = virJSONValueObjectGet(dev, "inserted")) ||
!(image = virJSONValueObjectGet(inserted, "image"))) !(image = virJSONValueObjectGet(inserted, "image")))
continue; continue;
if (!(bstats = virHashLookup(stats, dev_name))) {
if (VIR_ALLOC(bstats) < 0)
goto cleanup;
if (virHashAddEntry(stats, dev_name, bstats) < 0) {
VIR_FREE(bstats);
goto cleanup;
}
}
if (virJSONValueObjectGetNumberUlong(image, "virtual-size", if (virJSONValueObjectGetNumberUlong(image, "virtual-size",
&bstats->capacity) < 0) &bstats->capacity) < 0)
continue; continue;