]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemuDomainGetStatsBlock: Remove pre-blockdev code paths
authorPeter Krempa <pkrempa@redhat.com>
Wed, 20 Jul 2022 09:19:05 +0000 (11:19 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 11 Aug 2022 13:14:31 +0000 (15:14 +0200)
This function and its callees were a bit more entangled so remove the
pre-blockdev code separately.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c

index ad9c5ac7f39f552300337338558df84999d5ddf7..563f2532428016aa4462d428c7ca55748d93b1db 100644 (file)
@@ -18172,42 +18172,6 @@ qemuDomainGetStatsOneBlockFallback(virQEMUDriver *driver,
 }
 
 
-/**
- * qemuDomainGetStatsOneBlockRefreshNamed:
- * @src: disk source structure
- * @alias: disk alias
- * @stats: hash table containing stats for all disks
- * @nodedata: reply containing 'query-named-block-nodes' data
- *
- * Refresh disk block stats data (qemuBlockStats *) which are present only
- * in the reply of 'query-named-block-nodes' in cases when the data was gathered
- * by using query-block originally.
- */
-static void
-qemuDomainGetStatsOneBlockRefreshNamed(virStorageSource *src,
-                                       const char *alias,
-                                       GHashTable *stats,
-                                       GHashTable *nodedata)
-{
-    qemuBlockStats *entry;
-
-    virJSONValue *data;
-    unsigned long long tmp;
-
-    if (!nodedata || !src->nodestorage)
-        return;
-
-    if (!(entry = virHashLookup(stats, alias)))
-        return;
-
-    if (!(data = virHashLookup(nodedata, src->nodestorage)))
-        return;
-
-    if (virJSONValueObjectGetNumberUlong(data, "write_threshold", &tmp) == 0)
-        entry->write_threshold = tmp;
-}
-
-
 static int
 qemuDomainGetStatsOneBlock(virQEMUDriver *driver,
                            virQEMUDriverConfig *cfg,
@@ -18330,20 +18294,15 @@ qemuDomainGetStatsBlockExportHeader(virDomainDiskDef *disk,
 static int
 qemuDomainGetStatsBlockExportDisk(virDomainDiskDef *disk,
                                   GHashTable *stats,
-                                  GHashTable *nodestats,
                                   virTypedParamList *params,
                                   size_t *recordnr,
                                   bool visitBacking,
                                   virQEMUDriver *driver,
                                   virQEMUDriverConfig *cfg,
-                                  virDomainObj *dom,
-                                  bool blockdev)
+                                  virDomainObj *dom)
 
 {
     virStorageSource *n;
-    const char *frontendalias;
-    const char *backendalias;
-    const char *backendstoragealias;
 
     /*
      * This helps to keep logs clean from error messages on getting stats
@@ -18379,9 +18338,10 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDef *disk,
 
     for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
         g_autofree char *alias = NULL;
+        const char *frontendalias;
+        const char *backendalias;
+        const char *backendstoragealias;
 
-        /* for 'sd' disks we won't be displaying stats for the backing chain
-         * as we don't update the stats correctly */
         if (QEMU_DOMAIN_DISK_PRIVATE(disk)->qomName) {
             frontendalias = QEMU_DOMAIN_DISK_PRIVATE(disk)->qomName;
             backendalias = n->nodeformat;
@@ -18392,7 +18352,8 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDef *disk,
                 !(alias = qemuDomainStorageAlias(disk->info.alias, n->id)))
                 return -1;
 
-            qemuDomainGetStatsOneBlockRefreshNamed(n, alias, stats, nodestats);
+            /* for 'sd' disks we won't be displaying stats for the backing chain
+             * as we don't update the stats correctly */
 
             frontendalias = alias;
             backendalias = alias;
@@ -18428,7 +18389,7 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDef *disk,
     /* in blockdev mode where we can properly and uniquely identify images we
      * can also report stats for the mirror target or the scratch image or target
      * of a backup operation */
-    if (visitBacking && blockdev) {
+    if (visitBacking) {
         qemuDomainObjPrivate *priv = dom->privateData;
 
         if (disk->mirror &&
@@ -18498,13 +18459,8 @@ qemuDomainGetStatsBlock(virQEMUDriver *driver,
     size_t i;
     int rc;
     g_autoptr(GHashTable) stats = NULL;
-    g_autoptr(GHashTable) nodestats = NULL;
-    g_autoptr(virJSONValue) nodedata = NULL;
     qemuDomainObjPrivate *priv = dom->privateData;
     g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
-    bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
-    bool fetchnodedata = virQEMUCapsGet(priv->qemuCaps,
-                                        QEMU_CAPS_QUERY_NAMED_BLOCK_NODES) && !blockdev;
     int count_index = -1;
     size_t visited = 0;
     bool visitBacking = !!(privflags & QEMU_DOMAIN_STATS_BACKING);
@@ -18514,27 +18470,16 @@ qemuDomainGetStatsBlock(virQEMUDriver *driver,
 
         rc = qemuMonitorGetAllBlockStatsInfo(priv->mon, &stats);
 
-        if (rc >= 0) {
-            if (blockdev)
-                rc = qemuMonitorBlockStatsUpdateCapacityBlockdev(priv->mon, stats);
-            else
-                ignore_value(qemuMonitorBlockStatsUpdateCapacity(priv->mon, stats));
-        }
-
-        if (fetchnodedata)
-            nodedata = qemuMonitorQueryNamedBlockNodes(priv->mon);
+        if (rc >= 0)
+            rc = qemuMonitorBlockStatsUpdateCapacityBlockdev(priv->mon, stats);
 
         qemuDomainObjExitMonitor(dom);
 
         /* failure to retrieve stats is fine at this point */
-        if (rc < 0 || (fetchnodedata && !nodedata))
+        if (rc < 0)
             virResetLastError();
     }
 
-    if (nodedata &&
-        !(nodestats = qemuBlockGetNodeData(nodedata)))
-        return -1;
-
     /* 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.  */
@@ -18543,10 +18488,9 @@ qemuDomainGetStatsBlock(virQEMUDriver *driver,
         return -1;
 
     for (i = 0; i < dom->def->ndisks; i++) {
-        if (qemuDomainGetStatsBlockExportDisk(dom->def->disks[i], stats, nodestats,
+        if (qemuDomainGetStatsBlockExportDisk(dom->def->disks[i], stats,
                                               params, &visited,
-                                              visitBacking, driver, cfg, dom,
-                                              blockdev) < 0)
+                                              visitBacking, driver, cfg, dom) < 0)
             return -1;
     }