From nobody Tue Feb 10 14:29:33 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1533651842352513.4754747514178; Tue, 7 Aug 2018 07:24:02 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 308703082272; Tue, 7 Aug 2018 14:24:00 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EC4E33001A41; Tue, 7 Aug 2018 14:23:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A758E12E3A; Tue, 7 Aug 2018 14:23:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w77ENHB5010429 for ; Tue, 7 Aug 2018 10:23:17 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0A7492166BA2; Tue, 7 Aug 2018 14:23:17 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9D1312166BA0 for ; Tue, 7 Aug 2018 14:23:16 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Tue, 7 Aug 2018 16:22:31 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 40/55] qemu: Explicitly find disks for stats totals X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.26 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.45]); Tue, 07 Aug 2018 14:24:00 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Rather than totalling every entry from 'query-block' for stats provided by qemuDomainBlocksStatsGather total only stats for known disks. This will allow to return data for nodenames and qdevs in the same hash so that we can use them with -blockdev. Signed-off-by: Peter Krempa --- src/qemu/qemu_driver.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c941e502e5..af347c732c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -11037,13 +11037,9 @@ qemuDomainBlockResize(virDomainPtr dom, static int -qemuDomainBlockStatsGatherTotals(void *payload, - const void *name ATTRIBUTE_UNUSED, - void *opaque) +qemuDomainBlockStatsGatherTotals(qemuBlockStatsPtr data, + qemuBlockStatsPtr total) { - qemuBlockStatsPtr data =3D payload; - qemuBlockStatsPtr total =3D opaque; - #define QEMU_BLOCK_STAT_TOTAL(NAME) \ if (data->NAME > 0) \ total->NAME +=3D data->NAME @@ -11084,6 +11080,7 @@ qemuDomainBlocksStatsGather(virQEMUDriverPtr driver, virDomainDiskDefPtr disk; virHashTablePtr blockstats =3D NULL; qemuBlockStatsPtr stats; + size_t i; int nstats; const char *entryname =3D NULL; int ret =3D -1; @@ -11125,7 +11122,21 @@ qemuDomainBlocksStatsGather(virQEMUDriverPtr drive= r, **retstats =3D *stats; } else { - virHashForEach(blockstats, qemuDomainBlockStatsGatherTotals, *rets= tats); + for (i =3D 0; i < vm->def->ndisks; i++) { + disk =3D vm->def->disks[i]; + entryname =3D disk->info.alias; + + if (!entryname) + continue; + + if (!(stats =3D virHashLookup(blockstats, entryname))) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("cannot find statistics for device '%s'")= , entryname); + goto cleanup; + } + + qemuDomainBlockStatsGatherTotals(stats, *retstats); + } } ret =3D nstats; --=20 2.16.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list