]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: snapshot: Forbid taking/reverting snapshots in PMSUSPENDED state
authorPeter Krempa <pkrempa@redhat.com>
Mon, 21 Jul 2014 13:48:35 +0000 (15:48 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 22 Jul 2014 08:22:35 +0000 (10:22 +0200)
Qemu doesn't currently support them and behaves strangely. Just forbid
them.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1079162

src/qemu/qemu_driver.c

index 91baa7de4f63305edbefb49be285cd7b70849e13..eae23d3c52666611726ff56642e65f46459ef304 100644 (file)
@@ -13401,9 +13401,14 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain,
     case VIR_DOMAIN_SHUTDOWN:
     case VIR_DOMAIN_SHUTOFF:
     case VIR_DOMAIN_CRASHED:
-    case VIR_DOMAIN_PMSUSPENDED:
         break;
 
+    case VIR_DOMAIN_PMSUSPENDED:
+        virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                       _("qemu doesn't support taking snapshots of "
+                         "PMSUSPENDED guests"));
+        goto cleanup;
+
         /* invalid states */
     case VIR_DOMAIN_NOSTATE:
     case VIR_DOMAIN_BLOCKED: /* invalid state, unused in qemu */
@@ -14178,8 +14183,6 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
     case VIR_DOMAIN_SHUTDOWN:
     case VIR_DOMAIN_SHUTOFF:
     case VIR_DOMAIN_CRASHED:
-        /* XXX: The following one is clearly wrong! */
-    case VIR_DOMAIN_PMSUSPENDED:
         /* Transitions 1, 4, 7 */
         /* Newer qemu -loadvm refuses to revert to the state of a snapshot
          * created by qemu-img snapshot -c.  If the domain is running, we
@@ -14245,6 +14248,12 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
         }
         break;
 
+    case VIR_DOMAIN_PMSUSPENDED:
+        virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+                       _("qemu doesn't support reversion of snapshot taken in "
+                         "PMSUSPENDED state"));
+        goto cleanup;
+
     case VIR_DOMAIN_NOSTATE:
     case VIR_DOMAIN_BLOCKED:
     case VIR_DOMAIN_LAST: