]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: fix missing cleanup on error in qemuSaveImageStartVM
authorAni Sinha <ani@anisinha.ca>
Wed, 15 Dec 2021 13:07:21 +0000 (18:37 +0530)
committerJiri Denemark <jdenemar@redhat.com>
Thu, 16 Dec 2021 09:32:10 +0000 (10:32 +0100)
Commit 52521de8332c2323bd ("qemu: Use qemuDomainSaveStatus") replaced a call
to virDomainObjSave() with qemuDomainSaveStatus() as a part of cleanup. Since
qemuDomainSaveStatus() does not indicate any failure through its return code,
the error handling cleanup code got eliminated in the process. Thus upon
failure, we will no longer killing the started qemu process. This commit fixes
this by reverting the change that was introduced with the above commit.

Fixes: 52521de8332c2323bd ("qemu: Use qemuDomainSaveStatus")
Signed-off-by: Ani Sinha <ani@anisinha.ca>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
src/qemu/qemu_saveimage.c

index 28d6098dd83a6ad9b0388e26e65124e085af8ce1..557ee2cd21ba7faf83c8b4386327e2348968be56 100644 (file)
@@ -586,6 +586,7 @@ qemuSaveImageStartVM(virConnectPtr conn,
     VIR_AUTOCLOSE intermediatefd = -1;
     g_autoptr(virCommand) cmd = NULL;
     g_autofree char *errbuf = NULL;
+    g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
     virQEMUSaveHeader *header = &data->header;
     g_autoptr(qemuDomainSaveCookie) cookie = NULL;
     int rc = 0;
@@ -679,7 +680,10 @@ qemuSaveImageStartVM(virConnectPtr conn,
                                "%s", _("failed to resume domain"));
             goto cleanup;
         }
-        qemuDomainSaveStatus(vm);
+        if (virDomainObjSave(vm, driver->xmlopt, cfg->stateDir) < 0) {
+            VIR_WARN("Failed to save status on vm %s", vm->def->name);
+            goto cleanup;
+        }
     } else {
         int detail = (start_paused ? VIR_DOMAIN_EVENT_SUSPENDED_PAUSED :
                       VIR_DOMAIN_EVENT_SUSPENDED_RESTORED);