]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
ch: Drop pid from monitor
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 2 Apr 2025 15:45:56 +0000 (17:45 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 4 Apr 2025 13:30:23 +0000 (15:30 +0200)
The domain object already has a member that allows storing
hypervisor's PID (vm->pid). There's no need to duplicate it in
_virCHMonitor struct. Switch CH code to use the former.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/ch/ch_events.c
src/ch/ch_monitor.c
src/ch/ch_monitor.h
src/ch/ch_process.c

index 9cb873d8cdce0b4182f0913f2e01f848eacd6b7e..3d4e3c41e17b45677d71815b50f71115c7842390 100644 (file)
@@ -297,7 +297,7 @@ int
 virCHStartEventHandler(virCHMonitor *mon)
 {
     g_autofree char *name = NULL;
-    name = g_strdup_printf("ch-evt-%d", mon->pid);
+    name = g_strdup_printf("ch-evt-%d", mon->vm->pid);
 
     virObjectRef(mon);
     if (virThreadCreateFull(&mon->event_handler_thread,
index 91899e873b295cc4689ac00e573b8863d77a694c..1c2c1f285804ae1ca996531f5bf6f4cac44a2b39 100644 (file)
@@ -672,14 +672,14 @@ virCHMonitorNew(virDomainObj *vm, virCHDriverConfig *cfg, int logfile)
         return NULL;
     }
 
-    if ((rv = virPidFileReadPath(priv->pidfile, &mon->pid)) < 0) {
+    if ((rv = virPidFileReadPath(priv->pidfile, &vm->pid)) < 0) {
         virReportSystemError(-rv,
                              _("Domain  %1$s didn't show up"),
                              vm->def->name);
         return NULL;
     }
     VIR_DEBUG("CH vm=%p name=%s running with pid=%lld",
-              vm, vm->def->name, (long long)mon->pid);
+              vm, vm->def->name, (long long)vm->pid);
 
     /* open the reader end of fifo before start Event Handler */
     while ((event_monitor_fd = open(mon->eventmonitorpath, O_RDONLY)) < 0) {
@@ -727,12 +727,6 @@ void virCHMonitorClose(virCHMonitor *mon)
     if (!mon)
         return;
 
-    if (mon->pid > 0) {
-        /* try cleaning up the Cloud-Hypervisor process */
-        virProcessAbort(mon->pid);
-        mon->pid = 0;
-    }
-
     if (mon->handle)
         curl_easy_cleanup(mon->handle);
 
index 185de0dbfd4624739972a7dc1c15b2a06c0ba8bc..ffac9e938e61e4f34100f5c18db7adc67bb65ba4 100644 (file)
@@ -108,8 +108,6 @@ struct _virCHMonitor {
         size_t buf_fill_sz;
     } event_buffer;
 
-    pid_t pid;
-
     virDomainObj *vm;
 
     size_t nthreads;
index 6a59bf756acc1f976b647737250dae31b9c4c3f9..a008b5275269cd75af495bd0f7e8092700e98a80 100644 (file)
@@ -957,7 +957,6 @@ virCHProcessStart(virCHDriver *driver,
         }
     }
 
-    vm->pid = priv->monitor->pid;
     vm->def->id = vm->pid;
     priv->machineName = virCHDomainGetMachineName(vm);
 
@@ -1024,6 +1023,7 @@ virCHProcessStop(virCHDriver *driver,
     virErrorPreserveLast(&orig_err);
 
     if (priv->monitor) {
+        virProcessAbort(vm->pid);
         g_clear_pointer(&priv->monitor, virCHMonitorClose);
     }
 
@@ -1117,7 +1117,6 @@ virCHProcessStartRestore(virCHDriver *driver, virDomainObj *vm, const char *from
         }
     }
 
-    vm->pid = priv->monitor->pid;
     vm->def->id = vm->pid;
     priv->machineName = virCHDomainGetMachineName(vm);