int qemuSetupCgroup(virQEMUDriverPtr driver, virDomainObjPtr vm, virBitmapPtr nodemask) { qemuDomainObjPrivatePtr priv = vm->privateData; virCapsPtr caps = NULL; int ret = -1; if (!vm->pid) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Cannot setup cgroups until process is started")); return -1; } if (qemuInitCgroup(driver, vm) < 0) return -1; if (!priv->cgroup) return 0; if (!(caps = virQEMUDriverGetCapabilities(driver, false))) goto cleanup; if (qemuSetupDevicesCgroup(driver, vm) < 0) goto cleanup; if (qemuSetupBlkioCgroup(vm) < 0) goto cleanup; if (qemuSetupMemoryCgroup(vm) < 0) goto cleanup; if (qemuSetupCpuCgroup(vm) < 0) goto cleanup; if (qemuSetupCpusetCgroup(vm, nodemask, caps) < 0) goto cleanup; ret = 0; cleanup: virObjectUnref(caps); return ret; }
int qemuSetupCgroup(virQEMUDriverPtr driver, virDomainObjPtr vm, size_t nnicindexes, int *nicindexes) { qemuDomainObjPrivatePtr priv = vm->privateData; int ret = -1; if (!vm->pid) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Cannot setup cgroups until process is started")); return -1; } if (qemuInitCgroup(driver, vm, nnicindexes, nicindexes) < 0) return -1; if (!priv->cgroup) return 0; if (qemuSetupDevicesCgroup(driver, vm) < 0) goto cleanup; if (qemuSetupBlkioCgroup(vm) < 0) goto cleanup; if (qemuSetupMemoryCgroup(vm) < 0) goto cleanup; if (qemuSetupCpuCgroup(driver, vm) < 0) goto cleanup; if (qemuSetupCpusetCgroup(vm) < 0) goto cleanup; ret = 0; cleanup: return ret; }