]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_snapshot: move external disk prepare to single function
authorPavel Hrdina <phrdina@redhat.com>
Tue, 2 May 2023 17:03:51 +0000 (19:03 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Tue, 22 Aug 2023 14:06:16 +0000 (16:06 +0200)
We will need to reuse the functionality when reverting external
snapshots.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/qemu/qemu_snapshot.c

index 50f871baf399df974f775ff41b9db38af48668b0..a090ca13d46b055633e3c96d25914a555cb3fcd9 100644 (file)
@@ -527,6 +527,25 @@ qemuSnapshotPrepareDiskExternal(virDomainDiskDef *disk,
                                 bool active,
                                 bool reuse)
 {
+    if (!snapdisk->src->format) {
+        snapdisk->src->format = VIR_STORAGE_FILE_QCOW2;
+    } else if (snapdisk->src->format != VIR_STORAGE_FILE_QCOW2 &&
+               snapdisk->src->format != VIR_STORAGE_FILE_QED) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("external snapshot format for disk %1$s is unsupported: %2$s"),
+                       snapdisk->name,
+                       virStorageFileFormatTypeToString(snapdisk->src->format));
+        return -1;
+    }
+
+    if (snapdisk->src->metadataCacheMaxSize > 0) {
+        if (snapdisk->src->format != VIR_STORAGE_FILE_QCOW2) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("metadata cache max size control is supported only with qcow2 images"));
+            return -1;
+        }
+    }
+
     if (qemuTranslateSnapshotDiskSourcePool(snapdisk) < 0)
         return -1;
 
@@ -707,25 +726,6 @@ qemuSnapshotPrepare(virDomainObj *vm,
             break;
 
         case VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL:
-            if (!disk->src->format) {
-                disk->src->format = VIR_STORAGE_FILE_QCOW2;
-            } else if (disk->src->format != VIR_STORAGE_FILE_QCOW2 &&
-                       disk->src->format != VIR_STORAGE_FILE_QED) {
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                               _("external snapshot format for disk %1$s is unsupported: %2$s"),
-                               disk->name,
-                               virStorageFileFormatTypeToString(disk->src->format));
-                return -1;
-            }
-
-            if (disk->src->metadataCacheMaxSize > 0) {
-                if (disk->src->format != VIR_STORAGE_FILE_QCOW2) {
-                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                                   _("metadata cache max size control is supported only with qcow2 images"));
-                    return -1;
-                }
-            }
-
             if (qemuSnapshotPrepareDiskExternal(dom_disk, disk, active, reuse) < 0)
                 return -1;