From: Linus Torvalds Date: Tue, 2 Oct 2012 17:52:28 +0000 (-0700) Subject: Merge branch 'for-3.7-hierarchy' of git://git.kernel.org/pub/scm/linux/kernel/git... X-Git-Tag: Ubuntu-5.0.0-8.9~15178 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=68d47a137c3bef754923bccf73fb639c9b0bbd5e;p=mirror_ubuntu-disco-kernel.git Merge branch 'for-3.7-hierarchy' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup Pull cgroup hierarchy update from Tejun Heo: "Currently, different cgroup subsystems handle nested cgroups completely differently. There's no consistency among subsystems and the behaviors often are outright broken. People at least seem to agree that the broken hierarhcy behaviors need to be weeded out if any progress is gonna be made on this front and that the fallouts from deprecating the broken behaviors should be acceptable especially given that the current behaviors don't make much sense when nested. This patch makes cgroup emit warning messages if cgroups for subsystems with broken hierarchy behavior are nested to prepare for fixing them in the future. This was put in a separate branch because more related changes were expected (didn't make it this round) and the memory cgroup wanted to pull in this and make changes on top." * 'for-3.7-hierarchy' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: cgroup: mark subsystems with broken hierarchy support and whine if cgroups are nested for them --- 68d47a137c3bef754923bccf73fb639c9b0bbd5e diff --cc net/core/netprio_cgroup.c index 6bc460c38e4f,34f3615b30ca..39e7e4d3cdb4 --- a/net/core/netprio_cgroup.c +++ b/net/core/netprio_cgroup.c @@@ -326,9 -326,21 +326,19 @@@ struct cgroup_subsys net_prio_subsys = .create = cgrp_create, .destroy = cgrp_destroy, .attach = net_prio_attach, -#ifdef CONFIG_NETPRIO_CGROUP .subsys_id = net_prio_subsys_id, -#endif .base_cftypes = ss_files, - .module = THIS_MODULE + .module = THIS_MODULE, + + /* + * net_prio has artificial limit on the number of cgroups and + * disallows nesting making it impossible to co-mount it with other + * hierarchical subsystems. Remove the artificially low PRIOIDX_SZ + * limit and properly nest configuration such that children follow + * their parents' configurations by default and are allowed to + * override and remove the following. + */ + .broken_hierarchy = true, }; static int netprio_device_event(struct notifier_block *unused, diff --cc net/sched/cls_cgroup.c index 67cf90d962f4,907daf99ab2e..4a23ccca6b70 --- a/net/sched/cls_cgroup.c +++ b/net/sched/cls_cgroup.c @@@ -77,9 -77,20 +77,18 @@@ struct cgroup_subsys net_cls_subsys = .name = "net_cls", .create = cgrp_create, .destroy = cgrp_destroy, -#ifdef CONFIG_NET_CLS_CGROUP .subsys_id = net_cls_subsys_id, -#endif .base_cftypes = ss_files, .module = THIS_MODULE, + + /* + * While net_cls cgroup has the rudimentary hierarchy support of + * inheriting the parent's classid on cgroup creation, it doesn't + * properly propagates config changes in ancestors to their + * descendents. A child should follow the parent's configuration + * but be allowed to override it. Fix it and remove the following. + */ + .broken_hierarchy = true, }; struct cls_cgroup_head {