[libvirt] [PATCHv2 61/62] qemu: driver: Prepare qemuDomainGetStatsBlock (bulk disk stats) for -blockdev
Ján Tomko
jtomko at redhat.com
Fri Aug 17 12:28:50 UTC 2018
On Mon, Aug 13, 2018 at 06:00:35PM +0200, Peter Krempa wrote:
>Add code paths which call into the new functions to gather the data on a
>per-node-name basis and tweak the aliases used for extracting the data.
>
>Signed-off-by: Peter Krempa <pkrempa at redhat.com>
>---
> src/qemu/qemu_driver.c | 54 +++++++++++++++++++++++++++++++++++---------------
> 1 file changed, 38 insertions(+), 16 deletions(-)
>
>@@ -20265,17 +20279,17 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDefPtr disk,
>
> /* The following stats make sense only for the frontend device */
> if (n == disk->src) {
>- if (qemuDomainGetStatsBlockExportFrontend(alias, stats, *recordnr,
>+ if (qemuDomainGetStatsBlockExportFrontend(frontendalias, stats, *recordnr,
> records, nrecords) < 0)
> goto cleanup;
> }
>
> if (qemuDomainGetStatsOneBlock(driver, cfg, dom, records, nrecords,
>- alias, n, *recordnr,
>+ backendalias, n, *recordnr,
> stats) < 0)
> goto cleanup;
>
>- if (qemuDomainGetStatsBlockExportBackendStorage(alias,
>+ if (qemuDomainGetStatsBlockExportBackendStorage(backendstoragealias,
> stats, *recordnr,
> records, nrecords) < 0)
> goto cleanup;
>@@ -20310,19 +20324,26 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver,
> virJSONValuePtr nodedata = NULL;
> qemuDomainObjPrivatePtr priv = dom->privateData;
> virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
>+ bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
> bool fetchnodedata = virQEMUCapsGet(priv->qemuCaps,
>- QEMU_CAPS_QUERY_NAMED_BLOCK_NODES);
>+ QEMU_CAPS_QUERY_NAMED_BLOCK_NODES) && !blockdev;
> int count_index = -1;
> size_t visited = 0;
> bool visitBacking = !!(privflags & QEMU_DOMAIN_STATS_BACKING);
>
> if (HAVE_JOB(privflags) && virDomainObjIsActive(dom)) {
> qemuDomainObjEnterMonitor(driver, dom);
>- rc = qemuMonitorGetAllBlockStatsInfo(priv->mon, &stats,
>- visitBacking);
>- if (rc >= 0)
>- ignore_value(qemuMonitorBlockStatsUpdateCapacity(priv->mon, stats,
>- visitBacking));
>+
>+ rc = qemuMonitorGetAllBlockStatsInfo(priv->mon, &stats, visitBacking);
>+
>+ if (blockdev) {
>+ if (rc >= 0)
>+ rc = qemuMonitorBlockStatsUpdateCapacityBlockdev(priv->mon, stats);
>+ } else {
>+ if (rc >= 0)
>+ ignore_value(qemuMonitorBlockStatsUpdateCapacity(priv->mon, stats,
>+ visitBacking));
>+ }
less reading as:
if (rc >= 0) {
if (blockdev)
f()
else
F()
}
Reviewed-by: Ján Tomko <jtomko at redhat.com>
Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20180817/9c849f94/attachment-0001.sig>
More information about the libvir-list
mailing list