]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_migration: Use VIR_DOMAIN_PAUSED_API_ERROR
authorJiri Denemark <jdenemar@redhat.com>
Wed, 1 Mar 2023 11:55:18 +0000 (12:55 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 15 Mar 2023 09:52:14 +0000 (10:52 +0100)
Other APIs that internally use QEMU migration and need to temporarily
suspend a domain already report failure to resume vCPUs by setting
VIR_DOMAIN_PAUSED_API_ERROR state reason and emitting
VIR_DOMAIN_EVENT_SUSPENDED event with
VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR.

Let's do the same in qemuMigrationSrcRestoreDomainState for consistent
behavior.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_migration.c

index 2720f0b0839571e924193b5753a686278e29aa17..efec1b3be654a67ffec1a8aa252009c3ee25902f 100644 (file)
@@ -251,6 +251,16 @@ qemuMigrationSrcRestoreDomainState(virQEMUDriver *driver, virDomainObj *vm)
              * overwrite the previous error, though, so we just throw something
              * to the logs and hope for the best */
             VIR_ERROR(_("Failed to resume guest %s after failure"), vm->def->name);
+            if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_PAUSED) {
+                virObjectEvent *event;
+
+                virDomainObjSetState(vm, VIR_DOMAIN_PAUSED,
+                                     VIR_DOMAIN_PAUSED_API_ERROR);
+                event = virDomainEventLifecycleNewFromObj(vm,
+                                                          VIR_DOMAIN_EVENT_SUSPENDED,
+                                                          VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR);
+                virObjectEventStateQueue(driver->domainEventState, event);
+            }
             goto cleanup;
         }
         ret = true;