cgroup: disable controllers at parse time
This patch effectively reverts the commita3e72739b7
("cgroup: fix too early usage of static_branch_disable()"). The commit6041186a32
("init: initialize jump labels before command line option parsing") has moved the jump_label_init() before parse_args() which has made the commita3e72739b7
unnecessary. On the other hand there are consequences of disabling the controllers later as there are subsystems doing the controller checks for different decisions. One such incident is reported [1] regarding the memory controller and its impact on memory reclaim code. [1] https://lore.kernel.org/linux-mm/921e53f3-4b13-aab8-4a9e-e83ff15371e4@nec.com Signed-off-by: Shakeel Butt <shakeelb@google.com> Reported-by: NOMURA JUNICHI(野村 淳一) <junichi.nomura@nec.com> Signed-off-by: Tejun Heo <tj@kernel.org> Tested-by: Jun'ichi Nomura <junichi.nomura@nec.com>
This commit is contained in:
Родитель
c3d0e3fd41
Коммит
45e1ba4083
|
@ -5634,8 +5634,6 @@ int __init cgroup_init_early(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static u16 cgroup_disable_mask __initdata;
|
||||
|
||||
/**
|
||||
* cgroup_init - cgroup initialization
|
||||
*
|
||||
|
@ -5694,12 +5692,8 @@ int __init cgroup_init(void)
|
|||
* disabled flag and cftype registration needs kmalloc,
|
||||
* both of which aren't available during early_init.
|
||||
*/
|
||||
if (cgroup_disable_mask & (1 << ssid)) {
|
||||
static_branch_disable(cgroup_subsys_enabled_key[ssid]);
|
||||
printk(KERN_INFO "Disabling %s control group subsystem\n",
|
||||
ss->name);
|
||||
if (!cgroup_ssid_enabled(ssid))
|
||||
continue;
|
||||
}
|
||||
|
||||
if (cgroup1_ssid_disabled(ssid))
|
||||
printk(KERN_INFO "Disabling %s control group subsystem in v1 mounts\n",
|
||||
|
@ -6214,7 +6208,10 @@ static int __init cgroup_disable(char *str)
|
|||
if (strcmp(token, ss->name) &&
|
||||
strcmp(token, ss->legacy_name))
|
||||
continue;
|
||||
cgroup_disable_mask |= 1 << i;
|
||||
|
||||
static_branch_disable(cgroup_subsys_enabled_key[i]);
|
||||
pr_info("Disabling %s control group subsystem\n",
|
||||
ss->name);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
|
|
Загрузка…
Ссылка в новой задаче