]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: snapshot: Reject revertion from clearly bad states
authorPeter Krempa <pkrempa@redhat.com>
Fri, 18 Jul 2014 13:38:48 +0000 (15:38 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 21 Jul 2014 09:09:53 +0000 (11:09 +0200)
Report errors on some states snapshots done by qemu should never reach

src/qemu/qemu_driver.c

index 7ab0f813e7859359a151c6de9285ef8d4b932b2a..17829134ce776eb13dbf82853baa2d5b251318eb 100644 (file)
@@ -14158,11 +14158,8 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
     case VIR_DOMAIN_SHUTDOWN:
     case VIR_DOMAIN_SHUTOFF:
     case VIR_DOMAIN_CRASHED:
-    case VIR_DOMAIN_NOSTATE:
-    case VIR_DOMAIN_BLOCKED:
         /* XXX: The following one is clearly wrong! */
     case VIR_DOMAIN_PMSUSPENDED:
-    case VIR_DOMAIN_LAST:
         /* 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
@@ -14227,6 +14224,15 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
             }
         }
         break;
+
+    case VIR_DOMAIN_NOSTATE:
+    case VIR_DOMAIN_BLOCKED:
+    case VIR_DOMAIN_LAST:
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       _("Invalid target domain state '%s'. Refusing "
+                         "snapshot reversion"),
+                       virDomainStateTypeToString(snap->def->state));
+        goto cleanup;
     }
 
     ret = 0;