032100
From aa4b6b4877d60218c24d4ae713786f5ee37ac6dc Mon Sep 17 00:00:00 2001
032100
Message-Id: <aa4b6b4877d60218c24d4ae713786f5ee37ac6dc@dist-git>
032100
From: Jiri Denemark <jdenemar@redhat.com>
032100
Date: Wed, 29 Jun 2022 15:12:20 +0200
032100
Subject: [PATCH] qemu_migration_params: Replace qemuMigrationParamTypes array
032100
032100
We will need to annotate individual parameters a bit more than just
032100
noting their type. Let's introduce qemuMigrationParamInfo replacing
032100
simple qemuMigrationParamTypes with an array of structs.
032100
032100
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
032100
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
032100
(cherry picked from commit 184749691f27f30a39f6f6c77828ffb951af0255)
032100
032100
https://bugzilla.redhat.com/show_bug.cgi?id=2111070
032100
032100
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
032100
---
032100
 src/qemu/qemu_migration_params.c | 77 ++++++++++++++++++++++----------
032100
 1 file changed, 54 insertions(+), 23 deletions(-)
032100
032100
diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c
032100
index 398c07efd0..a68aed9aa4 100644
032100
--- a/src/qemu/qemu_migration_params.c
032100
+++ b/src/qemu/qemu_migration_params.c
032100
@@ -138,6 +138,11 @@ struct _qemuMigrationParamsTPMapItem {
032100
     int party; /* bit-wise OR of qemuMigrationParty */
032100
 };
032100
 
032100
+typedef struct _qemuMigrationParamInfoItem qemuMigrationParamInfoItem;
032100
+struct _qemuMigrationParamInfoItem {
032100
+    qemuMigrationParamType type;
032100
+};
032100
+
032100
 /* Migration capabilities which should always be enabled as long as they
032100
  * are supported by QEMU. If the capability is supposed to be enabled on both
032100
  * sides of migration, it won't be enabled unless both sides support it.
032100
@@ -224,22 +229,48 @@ static const qemuMigrationParamsTPMapItem qemuMigrationParamsTPMap[] = {
032100
      .party = QEMU_MIGRATION_SOURCE},
032100
 };
032100
 
032100
-static const qemuMigrationParamType qemuMigrationParamTypes[] = {
032100
-    [QEMU_MIGRATION_PARAM_COMPRESS_LEVEL] = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
-    [QEMU_MIGRATION_PARAM_COMPRESS_THREADS] = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
-    [QEMU_MIGRATION_PARAM_DECOMPRESS_THREADS] = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
-    [QEMU_MIGRATION_PARAM_THROTTLE_INITIAL] = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
-    [QEMU_MIGRATION_PARAM_THROTTLE_INCREMENT] = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
-    [QEMU_MIGRATION_PARAM_TLS_CREDS] = QEMU_MIGRATION_PARAM_TYPE_STRING,
032100
-    [QEMU_MIGRATION_PARAM_TLS_HOSTNAME] = QEMU_MIGRATION_PARAM_TYPE_STRING,
032100
-    [QEMU_MIGRATION_PARAM_MAX_BANDWIDTH] = QEMU_MIGRATION_PARAM_TYPE_ULL,
032100
-    [QEMU_MIGRATION_PARAM_DOWNTIME_LIMIT] = QEMU_MIGRATION_PARAM_TYPE_ULL,
032100
-    [QEMU_MIGRATION_PARAM_BLOCK_INCREMENTAL] = QEMU_MIGRATION_PARAM_TYPE_BOOL,
032100
-    [QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE] = QEMU_MIGRATION_PARAM_TYPE_ULL,
032100
-    [QEMU_MIGRATION_PARAM_MAX_POSTCOPY_BANDWIDTH] = QEMU_MIGRATION_PARAM_TYPE_ULL,
032100
-    [QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS] = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
+static const qemuMigrationParamInfoItem qemuMigrationParamInfo[] = {
032100
+    [QEMU_MIGRATION_PARAM_COMPRESS_LEVEL] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_COMPRESS_THREADS] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_DECOMPRESS_THREADS] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_THROTTLE_INITIAL] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_THROTTLE_INCREMENT] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_TLS_CREDS] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_STRING,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_TLS_HOSTNAME] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_STRING,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_MAX_BANDWIDTH] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_ULL,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_DOWNTIME_LIMIT] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_ULL,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_BLOCK_INCREMENTAL] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_BOOL,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_ULL,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_MAX_POSTCOPY_BANDWIDTH] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_ULL,
032100
+    },
032100
+    [QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS] = {
032100
+        .type = QEMU_MIGRATION_PARAM_TYPE_INT,
032100
+    },
032100
 };
032100
-G_STATIC_ASSERT(G_N_ELEMENTS(qemuMigrationParamTypes) == QEMU_MIGRATION_PARAM_LAST);
032100
+G_STATIC_ASSERT(G_N_ELEMENTS(qemuMigrationParamInfo) == QEMU_MIGRATION_PARAM_LAST);
032100
 
032100
 
032100
 virBitmap *
032100
@@ -281,7 +312,7 @@ qemuMigrationParamsFree(qemuMigrationParams *migParams)
032100
         return;
032100
 
032100
     for (i = 0; i < QEMU_MIGRATION_PARAM_LAST; i++) {
032100
-        if (qemuMigrationParamTypes[i] == QEMU_MIGRATION_PARAM_TYPE_STRING)
032100
+        if (qemuMigrationParamInfo[i].type == QEMU_MIGRATION_PARAM_TYPE_STRING)
032100
             g_free(migParams->params[i].value.s);
032100
     }
032100
 
032100
@@ -295,7 +326,7 @@ static int
032100
 qemuMigrationParamsCheckType(qemuMigrationParam param,
032100
                              qemuMigrationParamType type)
032100
 {
032100
-    if (qemuMigrationParamTypes[param] != type) {
032100
+    if (qemuMigrationParamInfo[param].type != type) {
032100
         virReportError(VIR_ERR_INTERNAL_ERROR,
032100
                        _("Type mismatch for '%s' migration parameter"),
032100
                        qemuMigrationParamTypeToString(param));
032100
@@ -595,7 +626,7 @@ qemuMigrationParamsFromFlags(virTypedParameterPtr params,
032100
         VIR_DEBUG("Setting migration parameter '%s' from '%s'",
032100
                   qemuMigrationParamTypeToString(item->param), item->typedParam);
032100
 
032100
-        switch (qemuMigrationParamTypes[item->param]) {
032100
+        switch (qemuMigrationParamInfo[item->param].type) {
032100
         case QEMU_MIGRATION_PARAM_TYPE_INT:
032100
             if (qemuMigrationParamsGetTPInt(migParams, item->param, params,
032100
                                             nparams, item->typedParam,
032100
@@ -671,7 +702,7 @@ qemuMigrationParamsDump(qemuMigrationParams *migParams,
032100
         if (!(item->party & QEMU_MIGRATION_DESTINATION))
032100
             continue;
032100
 
032100
-        switch (qemuMigrationParamTypes[item->param]) {
032100
+        switch (qemuMigrationParamInfo[item->param].type) {
032100
         case QEMU_MIGRATION_PARAM_TYPE_INT:
032100
             if (qemuMigrationParamsSetTPInt(migParams, item->param,
032100
                                             params, nparams, maxparams,
032100
@@ -721,7 +752,7 @@ qemuMigrationParamsFromJSON(virJSONValue *params)
032100
         name = qemuMigrationParamTypeToString(i);
032100
         pv = &migParams->params[i];
032100
 
032100
-        switch (qemuMigrationParamTypes[i]) {
032100
+        switch (qemuMigrationParamInfo[i].type) {
032100
         case QEMU_MIGRATION_PARAM_TYPE_INT:
032100
             if (virJSONValueObjectGetNumberInt(params, name, &pv->value.i) == 0)
032100
                 pv->set = true;
032100
@@ -764,7 +795,7 @@ qemuMigrationParamsToJSON(qemuMigrationParams *migParams)
032100
         if (!pv->set)
032100
             continue;
032100
 
032100
-        switch (qemuMigrationParamTypes[i]) {
032100
+        switch (qemuMigrationParamInfo[i].type) {
032100
         case QEMU_MIGRATION_PARAM_TYPE_INT:
032100
             rc = virJSONValueObjectAppendNumberInt(params, name, pv->value.i);
032100
             break;
032100
@@ -1280,7 +1311,7 @@ qemuMigrationParamsFormat(virBuffer *buf,
032100
         virBufferAsprintf(buf, "
032100
                           qemuMigrationParamTypeToString(i));
032100
 
032100
-        switch (qemuMigrationParamTypes[i]) {
032100
+        switch (qemuMigrationParamInfo[i].type) {
032100
         case QEMU_MIGRATION_PARAM_TYPE_INT:
032100
             virBufferAsprintf(buf, "value='%d'", pv->value.i);
032100
             break;
032100
@@ -1357,7 +1388,7 @@ qemuMigrationParamsParse(xmlXPathContextPtr ctxt,
032100
         }
032100
 
032100
         rc = 0;
032100
-        switch (qemuMigrationParamTypes[param]) {
032100
+        switch (qemuMigrationParamInfo[param].type) {
032100
         case QEMU_MIGRATION_PARAM_TYPE_INT:
032100
             rc = virStrToLong_i(value, NULL, 10, &pv->value.i);
032100
             break;
032100
-- 
032100
2.35.1
032100