On Tue, Apr 07, 2015 at 09:23:15AM -0400, John Ferlan wrote: > Future IOThread setting patches would copy the code anyway, so create > and generalize the add the vcpu to a cgroup into its own API. > > Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> > --- > src/qemu/qemu_driver.c | 65 +++++++++++++++++++++++++++++++++----------------- > 1 file changed, 43 insertions(+), 22 deletions(-) > > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index be54b7e..1114ce9 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c > @@ -4635,9 +4635,44 @@ static void qemuProcessEventHandler(void *data, void *opaque) > VIR_FREE(processEvent); > } > > -static int qemuDomainHotplugVcpus(virQEMUDriverPtr driver, > - virDomainObjPtr vm, > - unsigned int nvcpus) > +static virCgroupPtr > +qemuDomainHotplugAddCgroup(virCgroupPtr cgroup, qemuDomainAddCgroupForThread would be better IMHO. > + virCgroupThreadName nameval, > + int index, > + char *mem_mask, > + pid_t pid) > +{ > + virCgroupPtr new_cgroup = NULL; > + int rv = -1; > + > + /* Create cgroup */ > + if (virCgroupNewThread(cgroup, nameval, index, true, &new_cgroup) < 0) > + return NULL; > + > + if (mem_mask && virCgroupSetCpusetMems(new_cgroup, mem_mask) < 0) > + goto error; > + > + /* Add pid/thread to the cgroup */ > + rv = virCgroupAddTask(new_cgroup, pid); > + if (rv < 0) { > + virReportSystemError(-rv, > + _("unable to add id %d task %d to cgroup"), > + index, pid); > + virCgroupRemove(new_cgroup); > + goto error; > + } > + > + return new_cgroup; > + > + error: > + virCgroupFree(&new_cgroup); > + return NULL; > +} > + > +static int > +qemuDomainHotplugVcpus(virQEMUDriverPtr driver, > + virDomainObjPtr vm, > + unsigned int nvcpus) > { > qemuDomainObjPrivatePtr priv = vm->privateData; > size_t i; > @@ -4726,26 +4761,12 @@ static int qemuDomainHotplugVcpus(virQEMUDriverPtr driver, > if (nvcpus > oldvcpus) { > for (i = oldvcpus; i < nvcpus; i++) { > if (priv->cgroup) { > - int rv = -1; > - /* Create cgroup for the onlined vcpu */ > - if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_VCPU_NAME, i, > - true, &cgroup_vcpu) < 0) > + cgroup_vcpu = qemuDomainHotplugAddCgroup(priv->cgroup, > + VIR_CGROUP_VCPU_NAME, > + i, mem_mask, > + cpupids[i]); > + if (!cgroup_vcpu) > goto cleanup; > - > - if (mem_mask && > - virCgroupSetCpusetMems(cgroup_vcpu, mem_mask) < 0) > - goto cleanup; > - > - /* Add vcpu thread to the cgroup */ > - rv = virCgroupAddTask(cgroup_vcpu, cpupids[i]); > - if (rv < 0) { > - virReportSystemError(-rv, > - _("unable to add vcpu %zu task %d to cgroup"), > - i, cpupids[i]); > - virCgroupRemove(cgroup_vcpu); > - goto cleanup; > - } > - > } > > /* Inherit def->cpuset */ ACK Jan
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list