From: Peter Krempa Date: Fri, 20 Nov 2015 15:10:04 +0000 (+0100) Subject: qemu: cgroup: Don't use priv->ncpupids to iterate domain vCPUs X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=8715120e4d711df8cc9a34d114f80cb6127992f9;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git qemu: cgroup: Don't use priv->ncpupids to iterate domain vCPUs Use the proper data structures for the iteration since ncpupids will be made private later. --- diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index d5647bc70..8d88f9abb 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -820,7 +820,12 @@ qemuRestoreCgroupState(virDomainObjPtr vm) if (virCgroupSetCpusetMems(priv->cgroup, mem_mask) < 0) goto error; - for (i = 0; i < priv->nvcpupids; i++) { + for (i = 0; i < virDomainDefGetVcpusMax(vm->def); i++) { + virDomainVcpuInfoPtr vcpu = virDomainDefGetVcpu(vm->def, i); + + if (!vcpu->online) + continue; + if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_VCPU, i, false, &cgroup_temp) < 0 || virCgroupSetCpusetMemoryMigrate(cgroup_temp, true) < 0 || @@ -1036,7 +1041,12 @@ qemuSetupCgroupForVcpu(virDomainObjPtr vm) &mem_mask, -1) < 0) goto cleanup; - for (i = 0; i < priv->nvcpupids; i++) { + for (i = 0; i < virDomainDefGetVcpusMax(def); i++) { + virDomainVcpuInfoPtr vcpu = virDomainDefGetVcpu(def, i); + + if (!vcpu->online) + continue; + virCgroupFree(&cgroup_vcpu); if (virCgroupNewThread(priv->cgroup, VIR_CGROUP_THREAD_VCPU, i, true, &cgroup_vcpu) < 0)