From: Michal Privoznik <mprivozn(a)redhat.com>
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(a)redhat.com>
---
src/ch/ch_events.c | 2 +-
src/ch/ch_monitor.c | 10 ++--------
src/ch/ch_monitor.h | 2 --
src/ch/ch_process.c | 3 +--
4 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/src/ch/ch_events.c b/src/ch/ch_events.c
index 9cb873d8cd..3d4e3c41e1 100644
--- a/src/ch/ch_events.c
+++ b/src/ch/ch_events.c
@@ -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,
diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c
index 91899e873b..1c2c1f2858 100644
--- a/src/ch/ch_monitor.c
+++ b/src/ch/ch_monitor.c
@@ -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);
diff --git a/src/ch/ch_monitor.h b/src/ch/ch_monitor.h
index 185de0dbfd..ffac9e938e 100644
--- a/src/ch/ch_monitor.h
+++ b/src/ch/ch_monitor.h
@@ -108,8 +108,6 @@ struct _virCHMonitor {
size_t buf_fill_sz;
} event_buffer;
- pid_t pid;
-
virDomainObj *vm;
size_t nthreads;
diff --git a/src/ch/ch_process.c b/src/ch/ch_process.c
index 6a59bf756a..a008b52752 100644
--- a/src/ch/ch_process.c
+++ b/src/ch/ch_process.c
@@ -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);
--
2.49.0