]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: conf: Use proper type for (save|dump|snapshot)ImageFormat
authorPeter Krempa <pkrempa@redhat.com>
Thu, 4 Dec 2025 13:49:17 +0000 (14:49 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 10 Dec 2025 10:07:34 +0000 (11:07 +0100)
Extract the definition of the enum into a separate header file and
convert the config struct to use the proper types.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_conf.c
src/qemu/qemu_conf.h
src/qemu/qemu_saveimage.h
src/qemu/qemu_saveimage_format.h [new file with mode: 0644]

index 242955200a8ab51b051d3a6754e0728854b39d2a..de6e51177a514e5a0de69cba4d372e6265f15cee 100644 (file)
@@ -686,29 +686,47 @@ virQEMUDriverConfigLoadSaveEntry(virQEMUDriverConfig *cfg,
 
     if (virConfGetValueString(conf, "save_image_format", &savestr) < 0)
         return -1;
-    if (savestr && (cfg->saveImageFormat = qemuSaveFormatTypeFromString(savestr)) < 0) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("Invalid save_image_format '%1$s'"),
-                       savestr);
-        return -1;
+    if (savestr) {
+        int formatVal;
+
+        if ((formatVal = qemuSaveFormatTypeFromString(savestr)) < 0) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("Invalid save_image_format '%1$s'"),
+                           savestr);
+            return -1;
+        }
+
+        cfg->saveImageFormat = formatVal;
     }
 
     if (virConfGetValueString(conf, "dump_image_format", &dumpstr) < 0)
         return -1;
-    if (dumpstr && (cfg->dumpImageFormat = qemuSaveFormatTypeFromString(dumpstr)) < 0) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("Invalid dump_image_format '%1$s'"),
-                       dumpstr);
-        return -1;
+    if (dumpstr) {
+        int formatVal;
+
+        if ((formatVal = qemuSaveFormatTypeFromString(dumpstr)) < 0) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("Invalid dump_image_format '%1$s'"),
+                           dumpstr);
+            return -1;
+        }
+
+        cfg->dumpImageFormat = formatVal;
     }
 
     if (virConfGetValueString(conf, "snapshot_image_format", &snapstr) < 0)
         return -1;
-    if (snapstr && (cfg->snapshotImageFormat = qemuSaveFormatTypeFromString(snapstr)) < 0) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("Invalid snapshot_image_format '%1$s'"),
-                       snapstr);
-        return -1;
+    if (snapstr) {
+        int formatVal;
+
+        if ((formatVal = qemuSaveFormatTypeFromString(snapstr)) < 0) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("Invalid snapshot_image_format '%1$s'"),
+                           snapstr);
+            return -1;
+        }
+
+        cfg->snapshotImageFormat = formatVal;
     }
 
     if (virConfGetValueString(conf, "auto_dump_path", &cfg->autoDumpPath) < 0)
index edb65c99f4d2f886759c4c22d90ade218786c32d..c284e108a1f56c0cacb046e0e18c6acf0f9ad176 100644 (file)
@@ -37,6 +37,7 @@
 #include "locking/lock_manager.h"
 #include "qemu_capabilities.h"
 #include "qemu_nbdkit.h"
+#include "qemu_saveimage_format.h"
 #include "virclosecallbacks.h"
 #include "virhostdev.h"
 #include "virfile.h"
@@ -216,9 +217,9 @@ struct _virQEMUDriverConfig {
     bool securityDefaultConfined;
     bool securityRequireConfined;
 
-    int saveImageFormat;
-    int dumpImageFormat;
-    int snapshotImageFormat;
+    virQEMUSaveFormat saveImageFormat;
+    virQEMUSaveFormat dumpImageFormat;
+    virQEMUSaveFormat snapshotImageFormat;
 
     char *autoDumpPath;
     bool autoDumpBypassCache;
index 0a22ee5f05f7fcf6f375fb8919472940cf86f319..1fd96751a252e0e20986eb84538704c6a40b8e3e 100644 (file)
@@ -21,6 +21,7 @@
 #include "virconftypes.h"
 
 #include "qemu_domain.h"
+#include "qemu_saveimage_format.h"
 
 /* It would be nice to replace 'Qemud' with 'Qemu' but
  * this magic string is ABI, so it can't be changed
 
 G_STATIC_ASSERT(sizeof(QEMU_SAVE_MAGIC) == sizeof(QEMU_SAVE_PARTIAL));
 
-typedef enum {
-    QEMU_SAVE_FORMAT_RAW = 0,
-    QEMU_SAVE_FORMAT_GZIP = 1,
-    QEMU_SAVE_FORMAT_BZIP2 = 2,
-    /*
-     * Deprecated by xz and never used as part of a release
-     * QEMU_SAVE_FORMAT_LZMA
-     */
-    QEMU_SAVE_FORMAT_XZ = 3,
-    QEMU_SAVE_FORMAT_LZOP = 4,
-    QEMU_SAVE_FORMAT_ZSTD = 5,
-    QEMU_SAVE_FORMAT_SPARSE = 6,
-    /* Note: add new members only at the end.
-       These values are used in the on-disk format.
-       Do not change or re-use numbers. */
-
-    QEMU_SAVE_FORMAT_LAST
-} virQEMUSaveFormat;
+/* enum virQEMUSaveFormat is declared in qemu_saveimage_format.h */
 VIR_ENUM_DECL(qemuSaveFormat);
 
 typedef struct _virQEMUSaveHeader virQEMUSaveHeader;
diff --git a/src/qemu/qemu_saveimage_format.h b/src/qemu/qemu_saveimage_format.h
new file mode 100644 (file)
index 0000000..53756f9
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#pragma once
+
+/* This enum resides in a separate file to allow inclusion into qemu_conf.h */
+typedef enum {
+    QEMU_SAVE_FORMAT_RAW = 0,
+    QEMU_SAVE_FORMAT_GZIP = 1,
+    QEMU_SAVE_FORMAT_BZIP2 = 2,
+    /*
+     * Deprecated by xz and never used as part of a release
+     * QEMU_SAVE_FORMAT_LZMA
+     */
+    QEMU_SAVE_FORMAT_XZ = 3,
+    QEMU_SAVE_FORMAT_LZOP = 4,
+    QEMU_SAVE_FORMAT_ZSTD = 5,
+    QEMU_SAVE_FORMAT_SPARSE = 6,
+    /* Note: add new members only at the end.
+       These values are used in the on-disk format.
+       Do not change or re-use numbers. */
+
+    QEMU_SAVE_FORMAT_LAST
+} virQEMUSaveFormat;