]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: snapshot: Allow snapshot consisting only of 'manual'-y handled disks
authorPeter Krempa <pkrempa@redhat.com>
Mon, 9 Jun 2025 13:50:42 +0000 (15:50 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 21 Oct 2025 13:32:40 +0000 (15:32 +0200)
The 'manual' snapshot mode is meant for disks where the users wants to
take a snapshot via means outside of libvirt, e.g. on a SAN network.

Allow creating a snapshot which consists entirely of 'manual' disks. For
now this effectively means that the VM will be paused but in the future
more logic can be added to ensure consistency.

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

index 5c12dca8920836a00ee9f9ac4911e290c6e814bf..d4994dd54ed7a0a93a7f52ffdbb7fbad9186dd60 100644 (file)
@@ -996,7 +996,7 @@ qemuSnapshotPrepare(virDomainObj *vm,
         }
     }
 
-    if (!found_internal && !external &&
+    if (!found_internal && !external && !*has_manual &&
         def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_NO) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("nothing selected for snapshot"));
@@ -1013,7 +1013,7 @@ qemuSnapshotPrepare(virDomainObj *vm,
     }
 
     /* disk snapshot requires at least one disk */
-    if (def->state == VIR_DOMAIN_SNAPSHOT_DISK_SNAPSHOT && !external) {
+    if (def->state == VIR_DOMAIN_SNAPSHOT_DISK_SNAPSHOT && !external && !*has_manual) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                        _("disk-only snapshots require at least one disk to be selected for snapshot"));
         return -1;