]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuMigrationParamsForSave: Don't take opaque 'flags'
authorPeter Krempa <pkrempa@redhat.com>
Thu, 4 Dec 2025 17:09:05 +0000 (18:09 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 10 Dec 2025 10:07:34 +0000 (11:07 +0100)
Similarly to previous commit, 'flags' is really opaque. The function
lives in migration code and similar functions there expect migration
flags. Here we get virDomainSaveRestoreFlags. Here at least the dump
code handles it properly and passes VIR_DOMAIN_SAVE_BYPASS_CACHE rather
than VIR_DUMP_BYPASS_CACHE.

Note: We, in many cases, encourage use of 'flags' instead of a bunch of
boolean parameters. Since C doesn't do proper type checks on enums and
in fact with 'flags' we pass a binary or of some flags rather than pure
options from the enum there isn't really an elegant solution that would
be enforced by the compiler and easy on eyes. With a bunch of booleans
at least anyone reading the code will need to look up the function
definition to see the header rather than assume that passing in 'flags'
is fine without properly checking *which* flags are accepted by the
function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c
src/qemu/qemu_migration_params.c
src/qemu/qemu_migration_params.h

index cca9d06786c1ad511ca42d14a3071d7e6797d75c..3c6dd97c0479112d0c3527d6ba479753d8ece1c7 100644 (file)
@@ -2679,7 +2679,7 @@ qemuDomainSaveInternal(virQEMUDriver *driver,
 
     if (!(saveParams = qemuMigrationParamsForSave(params, nparams,
                                                   format == QEMU_SAVE_FORMAT_SPARSE,
-                                                  flags)))
+                                                  (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE))))
         goto endjob;
 
     ret = qemuSaveImageCreate(driver, vm, path, data, compressor,
@@ -5798,7 +5798,8 @@ qemuDomainRestoreInternal(virConnectPtr conn,
         goto cleanup;
 
     sparse = data->header.format == QEMU_SAVE_FORMAT_SPARSE;
-    if (!(restoreParams = qemuMigrationParamsForSave(params, nparams, sparse, flags)))
+    if (!(restoreParams = qemuMigrationParamsForSave(params, nparams, sparse,
+                                                     (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE))))
         goto cleanup;
 
     fd = qemuSaveImageOpen(driver, path,
@@ -6130,7 +6131,7 @@ qemuDomainObjRestore(virConnectPtr conn,
 
     sparse = data->header.format == QEMU_SAVE_FORMAT_SPARSE;
     if (!(restoreParams = qemuMigrationParamsForSave(NULL, 0, sparse,
-                                                     bypass_cache ? VIR_DOMAIN_SAVE_BYPASS_CACHE : 0)))
+                                                     bypass_cache)))
         return -1;
 
     fd = qemuSaveImageOpen(driver, path, bypass_cache, sparse, &wrapperFd, false);
index b79bbad5c2b087eae9f4fae92fabd2aac97cbdf3..dd4751674231e0aa301b09c4db2777fa23066537 100644 (file)
@@ -800,7 +800,7 @@ qemuMigrationParams *
 qemuMigrationParamsForSave(virTypedParameterPtr params,
                            int nparams,
                            bool sparse,
-                           unsigned int flags)
+                           bool bypassCache)
 {
     g_autoptr(qemuMigrationParams) saveParams = NULL;
     int nchannels = 0;
@@ -837,7 +837,7 @@ qemuMigrationParamsForSave(virTypedParameterPtr params,
         saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].value.i = nchannels;
         saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].set = true;
 
-        if (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) {
+        if (bypassCache) {
             saveParams->params[QEMU_MIGRATION_PARAM_DIRECT_IO].value.b = true;
             saveParams->params[QEMU_MIGRATION_PARAM_DIRECT_IO].set = true;
         }
index 9d771d519df1b6925587b4ab7ec3364b92908f34..b7a829b85a7eebe25a3b1f5c4354920a905d72e0 100644 (file)
@@ -92,7 +92,7 @@ qemuMigrationParams *
 qemuMigrationParamsForSave(virTypedParameterPtr params,
                            int nparams,
                            bool sparse,
-                           unsigned int flags);
+                           bool bypassCache);
 
 int
 qemuMigrationParamsDump(qemuMigrationParams *migParams,