From 8ea33c8c18e4bf17b61585131a810e0d68a425cc Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 18 Apr 2023 15:33:24 +0200 Subject: [PATCH] qemuDomainGetStatsBlock: Don't directly access virTypedParamList MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The struct will be made private in upcoming patches. Construct the list of block entries into a separate list and append them rather than remember the index of the count element. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko Reviewed-by: Martin Kletzander --- src/qemu/qemu_driver.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index a2b24babac..b6639ba7e9 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -17594,9 +17594,9 @@ qemuDomainGetStatsBlock(virQEMUDriver *driver, g_autoptr(GHashTable) stats = NULL; qemuDomainObjPrivate *priv = dom->privateData; g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); - int count_index = -1; size_t visited = 0; bool visitBacking = !!(privflags & QEMU_DOMAIN_STATS_BACKING); + g_autoptr(virTypedParamList) blockparams = virTypedParamListNew(); if (HAVE_JOB(privflags) && virDomainObjIsActive(dom)) { qemuDomainObjEnterMonitor(dom); @@ -17613,21 +17613,17 @@ qemuDomainGetStatsBlock(virQEMUDriver *driver, virResetLastError(); } - /* When listing backing chains, it's easier to fix up the count - * after the iteration than it is to iterate twice; but we still - * want count listed first. */ - count_index = params->npar; - if (virTypedParamListAddUInt(params, 0, "block.count") < 0) - return -1; - for (i = 0; i < dom->def->ndisks; i++) { if (qemuDomainGetStatsBlockExportDisk(dom->def->disks[i], stats, - params, &visited, + blockparams, &visited, visitBacking, driver, cfg, dom) < 0) return -1; } - params->par[count_index].value.ui = visited; + if (virTypedParamListAddUInt(params, visited, "block.count") < 0) + return -1; + + virTypedParamListConcat(params, &blockparams); return 0; }