]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
ch: kill CH process if restore fails
authorPurna Pavan Chandra <paekkaladevi@linux.microsoft.com>
Mon, 5 Aug 2024 14:41:00 +0000 (14:41 +0000)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 9 Aug 2024 13:03:07 +0000 (15:03 +0200)
Invoke virCHProcessStop to kill CH process incase of any failures during
restore operation.

Signed-off-by: Purna Pavan Chandra <paekkaladevi@linux.microsoft.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/ch/ch_process.c

index d53cce46317790bae9b6080a46b050ae8841610e..9816509e494fdac641de802816709879083ba7aa 100644 (file)
@@ -981,7 +981,7 @@ virCHProcessStartRestore(virCHDriver *driver, virDomainObj *vm, const char *from
         if (!(priv->monitor = virCHProcessConnectMonitor(driver, vm))) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                            _("failed to create connection to CH socket"));
-            return -1;
+            goto cleanup;
         }
     }
 
@@ -992,7 +992,7 @@ virCHProcessStartRestore(virCHDriver *driver, virDomainObj *vm, const char *from
     if (virCHMonitorBuildRestoreJson(vm->def, from, &payload) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("failed to restore domain"));
-        return -1;
+        goto cleanup;
     }
 
     virBufferAddLit(&http_headers, "PUT /api/v1/vm.restore HTTP/1.1\r\n");
@@ -1005,7 +1005,7 @@ virCHProcessStartRestore(virCHDriver *driver, virDomainObj *vm, const char *from
     payload = virBufferContentAndReset(&buf);
 
     if ((mon_sockfd = chMonitorSocketConnect(priv->monitor)) < 0)
-        return -1;
+        goto cleanup;
 
     if (virCHRestoreCreateNetworkDevices(driver, vm->def, &tapfds, &ntapfds, &nicindexes, &nnicindexes) < 0)
         goto cleanup;
@@ -1042,5 +1042,7 @@ virCHProcessStartRestore(virCHDriver *driver, virDomainObj *vm, const char *from
  cleanup:
     if (tapfds)
         chCloseFDs(tapfds, ntapfds);
+    if (ret)
+        virCHProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED);
     return ret;
 }