]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: monitor: check for common 'Error: ' string
authorCole Robinson <crobinso@redhat.com>
Wed, 10 Apr 2019 17:56:54 +0000 (13:56 -0400)
committerCole Robinson <crobinso@redhat.com>
Tue, 23 Apr 2019 15:05:44 +0000 (11:05 -0400)
qemu 4.0.0 will prefix most errors with 'Error: ', so consider any
string instance of that an error.

This fixes savevm failure detection when migration is blocked due to
usage of nested VMX

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

Acked-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
src/qemu/qemu_monitor_text.c

index 76095674ab854d99cb8756992e0249c6cd45c6d2..280cc5884022df470b6f54c20346a799a5d360fc 100644 (file)
@@ -182,6 +182,7 @@ qemuMonitorTextCreateSnapshot(qemuMonitorPtr mon,
     if (strstr(reply, "Error while creating snapshot") ||
         strstr(reply, "Could not open VM state file") ||
         strstr(reply, "State blocked by non-migratable device") ||
+        strstr(reply, "Error: ") ||
         (strstr(reply, "Error") && strstr(reply, "while writing VM"))) {
         virReportError(VIR_ERR_OPERATION_FAILED,
                        _("Failed to take snapshot: %s"), reply);
@@ -229,6 +230,7 @@ int qemuMonitorTextLoadSnapshot(qemuMonitorPtr mon, const char *name)
                        _("Failed to load snapshot: %s"), reply);
         goto cleanup;
     } else if (strstr(reply, "Could not open VM state file") ||
+               strstr(reply, "Error: ") ||
                (strstr(reply, "Error") &&
                 (strstr(reply, "while loading VM state") ||
                  strstr(reply, "while activating snapshot on")))) {
@@ -266,8 +268,9 @@ int qemuMonitorTextDeleteSnapshot(qemuMonitorPtr mon, const char *name)
     } else if (strstr(reply, "Snapshots not supported on device")) {
         virReportError(VIR_ERR_OPERATION_INVALID, "%s", reply);
         goto cleanup;
-    } else if (strstr(reply, "Error") &&
-               strstr(reply, "while deleting snapshot")) {
+    } else if (strstr(reply, "Error: ") ||
+               (strstr(reply, "Error") &&
+                strstr(reply, "while deleting snapshot"))) {
         virReportError(VIR_ERR_OPERATION_FAILED,
                        _("Failed to delete snapshot: %s"), reply);
         goto cleanup;