mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 14:15:28 +00:00
util: vircgroup: pass parent cgroup into virCgroupDetectControllersCB
In cgroups v2 we don't have to detect available controllers every single time if we are creating a new cgroup based on parent cgroup. Signed-off-by: Pavel Hrdina <phrdina@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
7d5b283065
commit
7bca1c9bdc
@ -383,7 +383,7 @@ virCgroupDetect(virCgroupPtr group,
|
|||||||
|
|
||||||
for (i = 0; i < VIR_CGROUP_BACKEND_TYPE_LAST; i++) {
|
for (i = 0; i < VIR_CGROUP_BACKEND_TYPE_LAST; i++) {
|
||||||
if (group->backends[i]) {
|
if (group->backends[i]) {
|
||||||
int rc = group->backends[i]->detectControllers(group, controllers);
|
int rc = group->backends[i]->detectControllers(group, controllers, parent);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
return -1;
|
return -1;
|
||||||
controllersAvailable |= rc;
|
controllersAvailable |= rc;
|
||||||
|
@ -95,7 +95,8 @@ typedef char *
|
|||||||
|
|
||||||
typedef int
|
typedef int
|
||||||
(*virCgroupDetectControllersCB)(virCgroupPtr group,
|
(*virCgroupDetectControllersCB)(virCgroupPtr group,
|
||||||
int controllers);
|
int controllers,
|
||||||
|
virCgroupPtr parent);
|
||||||
|
|
||||||
typedef bool
|
typedef bool
|
||||||
(*virCgroupHasControllerCB)(virCgroupPtr cgroup,
|
(*virCgroupHasControllerCB)(virCgroupPtr cgroup,
|
||||||
|
@ -420,7 +420,8 @@ virCgroupV1StealPlacement(virCgroupPtr group)
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
virCgroupV1DetectControllers(virCgroupPtr group,
|
virCgroupV1DetectControllers(virCgroupPtr group,
|
||||||
int controllers)
|
int controllers,
|
||||||
|
virCgroupPtr parent ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t j;
|
size_t j;
|
||||||
|
@ -285,16 +285,21 @@ virCgroupV2ParseControllersFile(virCgroupPtr group)
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
virCgroupV2DetectControllers(virCgroupPtr group,
|
virCgroupV2DetectControllers(virCgroupPtr group,
|
||||||
int controllers)
|
int controllers,
|
||||||
|
virCgroupPtr parent)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if (virCgroupV2ParseControllersFile(group) < 0)
|
if (parent) {
|
||||||
return -1;
|
group->unified.controllers = parent->unified.controllers;
|
||||||
|
} else {
|
||||||
|
if (virCgroupV2ParseControllersFile(group) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
/* In cgroup v2 there is no cpuacct controller, the cpu.stat file always
|
/* In cgroup v2 there is no cpuacct controller, the cpu.stat file always
|
||||||
* exists with usage stats. */
|
* exists with usage stats. */
|
||||||
group->unified.controllers |= 1 << VIR_CGROUP_CONTROLLER_CPUACCT;
|
group->unified.controllers |= 1 << VIR_CGROUP_CONTROLLER_CPUACCT;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < VIR_CGROUP_CONTROLLER_LAST; i++)
|
for (i = 0; i < VIR_CGROUP_CONTROLLER_LAST; i++)
|
||||||
VIR_DEBUG("Controller '%s' present=%s",
|
VIR_DEBUG("Controller '%s' present=%s",
|
||||||
|
Loading…
Reference in New Issue
Block a user