[libvirt] [PATCH 3/3] qemu: monitor: check for common 'Error: ' string

Cole Robinson crobinso at redhat.com
Wed Apr 10 18:29:37 UTC 2019


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

Signed-off-by: Cole Robinson <crobinso at redhat.com>
---
 src/qemu/qemu_monitor_text.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
index 76095674ab..280cc58840 100644
--- a/src/qemu/qemu_monitor_text.c
+++ b/src/qemu/qemu_monitor_text.c
@@ -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;
-- 
2.21.0




More information about the libvir-list mailing list