mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-27 13:52:20 +00:00
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:
parent
be6f94277e
commit
8cb44c01a8
@ -284,6 +284,14 @@ qemuExtDevicesSetupCgroup(virQEMUDriverPtr driver,
|
|||||||
return -1;
|
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 &&
|
if (def->tpm &&
|
||||||
qemuExtTPMSetupCgroup(driver, def, cgroup) < 0)
|
qemuExtTPMSetupCgroup(driver, def, cgroup) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -242,6 +242,14 @@ qemuSlirpStop(qemuSlirpPtr slirp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
qemuSlirpSetupCgroup(qemuSlirpPtr slirp,
|
||||||
|
virCgroupPtr cgroup)
|
||||||
|
{
|
||||||
|
return virCgroupAddProcess(cgroup, slirp->pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
qemuSlirpStart(qemuSlirpPtr slirp,
|
qemuSlirpStart(qemuSlirpPtr slirp,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
@ -249,6 +257,7 @@ qemuSlirpStart(qemuSlirpPtr slirp,
|
|||||||
virDomainNetDefPtr net,
|
virDomainNetDefPtr net,
|
||||||
bool incoming)
|
bool incoming)
|
||||||
{
|
{
|
||||||
|
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||||
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
||||||
g_autoptr(virCommand) cmd = NULL;
|
g_autoptr(virCommand) cmd = NULL;
|
||||||
g_autofree char *pidfile = NULL;
|
g_autofree char *pidfile = NULL;
|
||||||
@ -352,6 +361,10 @@ qemuSlirpStart(qemuSlirpPtr slirp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
slirp->pid = pid;
|
slirp->pid = pid;
|
||||||
|
|
||||||
|
if (priv->cgroup && qemuSlirpSetupCgroup(slirp, priv->cgroup) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
@ -361,5 +374,6 @@ qemuSlirpStart(qemuSlirpPtr slirp,
|
|||||||
unlink(pidfile);
|
unlink(pidfile);
|
||||||
if (killDBusDaemon)
|
if (killDBusDaemon)
|
||||||
qemuDBusStop(driver, vm);
|
qemuDBusStop(driver, vm);
|
||||||
|
slirp->pid = 0;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -75,4 +75,7 @@ void qemuSlirpStop(qemuSlirpPtr slirp,
|
|||||||
|
|
||||||
int qemuSlirpGetFD(qemuSlirpPtr slirp);
|
int qemuSlirpGetFD(qemuSlirpPtr slirp);
|
||||||
|
|
||||||
|
int qemuSlirpSetupCgroup(qemuSlirpPtr slirp,
|
||||||
|
virCgroupPtr cgroup);
|
||||||
|
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuSlirp, qemuSlirpFree);
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuSlirp, qemuSlirpFree);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user