slirp: add helper to VM cgroup

The slirp helper process should be associated with the VM cgroup, like
other helpers.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Marc-André Lureau 2020-04-08 19:23:47 +02:00 committed by Michal Privoznik
parent be6f94277e
commit 8cb44c01a8
3 changed files with 25 additions and 0 deletions

View File

@ -284,6 +284,14 @@ qemuExtDevicesSetupCgroup(virQEMUDriverPtr driver,
return -1;
}
for (i = 0; i < def->nnets; i++) {
virDomainNetDefPtr net = def->nets[i];
qemuSlirpPtr slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp;
if (slirp && qemuSlirpSetupCgroup(slirp, cgroup) < 0)
return -1;
}
if (def->tpm &&
qemuExtTPMSetupCgroup(driver, def, cgroup) < 0)
return -1;

View File

@ -242,6 +242,14 @@ qemuSlirpStop(qemuSlirpPtr slirp,
}
int
qemuSlirpSetupCgroup(qemuSlirpPtr slirp,
virCgroupPtr cgroup)
{
return virCgroupAddProcess(cgroup, slirp->pid);
}
int
qemuSlirpStart(qemuSlirpPtr slirp,
virDomainObjPtr vm,
@ -249,6 +257,7 @@ qemuSlirpStart(qemuSlirpPtr slirp,
virDomainNetDefPtr net,
bool incoming)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
g_autoptr(virCommand) cmd = NULL;
g_autofree char *pidfile = NULL;
@ -352,6 +361,10 @@ qemuSlirpStart(qemuSlirpPtr slirp,
}
slirp->pid = pid;
if (priv->cgroup && qemuSlirpSetupCgroup(slirp, priv->cgroup) < 0)
goto error;
return 0;
error:
@ -361,5 +374,6 @@ qemuSlirpStart(qemuSlirpPtr slirp,
unlink(pidfile);
if (killDBusDaemon)
qemuDBusStop(driver, vm);
slirp->pid = 0;
return -1;
}

View File

@ -75,4 +75,7 @@ void qemuSlirpStop(qemuSlirpPtr slirp,
int qemuSlirpGetFD(qemuSlirpPtr slirp);
int qemuSlirpSetupCgroup(qemuSlirpPtr slirp,
virCgroupPtr cgroup);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuSlirp, qemuSlirpFree);