[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