
On 12/16/2014 08:09 AM, Peter Krempa wrote:
On 12/16/14 09:04, Eric Blake wrote:
A coming patch will make it optionally possible to list backing chain block stats; in this mode of operation, block.counts is no longer the number of <disks> in the domain, but the number of blocks in the array being reported. We still want block.count listed first, but rather than iterate the tree twice (once to count, and once to list stats), it's easier to just touch things up after the fact.
+ count_index = record->nparams;
The index is remembered prior ..
+ QEMU_ADD_COUNT_PARAM(record, maxparams, "block", 0);
to adding the element into the array. As the macro may jump to cleanup precisely at this moment, if adding of the element failed you'd ...
- for (i = 0; i < dom->def->ndisks; i++) { + for (; i < dom->def->ndisks; i++) { qemuBlockStats *entry; virDomainDiskDefPtr disk = dom->def->disks[i];
@@ -18627,6 +18632,8 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver, ret = 0;
cleanup: + if (count_index >= 0) + record->params[count_index].value.ui = i;
Touch a non-existent field here.
Ooh, good catch.
if (ret == 0 && count_index >= 0) ...
virHashFree(stats); virObjectUnref(cfg); return ret;
ACK with the tweak above.
Fixed, and will push shortly. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org