On 2014/5/10 5:31, Tejun Heo wrote: > Hello, > > Currently, while csses (cgroup_subsys_states) have ->parent linkage > too, only cgroups form full tree through their ->children and > ->sibling fields and css iterations naturally is implemented by > iterating cgroups and then dereferencing the css for the specified > subsystem. > > There are now use cases where controllers need to iterate through > csses regardless of their online state as long as they have positive > reference. This can't easily be achieved by iterating cgroups because > its css pointer array needs to be cleared on offline and there may be > multiple dying csses for a cgroup for the same subsystem and there's > only one pointer per cgroup-subsystem pair. > > This patchset moves ->children and ->sibling from cgroup to css and > link all csses in proper trees and then make css iterators walk csses > directly instead of going through cgroups. This achieves iteration of > all non-released csses while also simplifying the iteration > implementation. This is also in line with the general direction of > using csses as the primary structural component. > > This patchset contains the following fourteen patches. > > 0001-cgroup-remove-css_parent.patch > 0002-cgroup-remove-pointless-has-tasks-children-test-from.patch > 0003-memcg-update-memcg_has_children-to-use-css_next_chil.patch > 0004-device_cgroup-remove-direct-access-to-cgroup-childre.patch > 0005-cgroup-remove-cgroup-parent.patch > 0006-cgroup-move-cgroup-sibling-and-children-into-cgroup_.patch > 0007-cgroup-link-all-cgroup_subsys_states-in-their-siblin.patch > 0008-cgroup-move-cgroup-serial_nr-into-cgroup_subsys_stat.patch > 0009-cgroup-introduce-CSS_RELEASED-and-reduce-css-iterati.patch > 0010-cgroup-iterate-cgroup_subsys_states-directly.patch > 0011-cgroup-use-CSS_ONLINE-instead-of-CGRP_DEAD.patch > 0012-cgroup-convert-cgroup_has_live_children-into-css_has.patch > 0013-device_cgroup-use-css_has_online_children-instead-of.patch > 0014-cgroup-implement-css_tryget.patch > > 0001-0004 are prep patches. > > 0005-0008 move fields from cgroup to css and link csses in tree > structure instead of cgroups. > > 0009-0010 implement direct css iteration. > > 0011-0013 convert a cgroup based interface to a css one, which is now > possible as both are the same in terms of the tree structure, and fix > devcg brekage using it. > > 0014 implements css_tryget() which is to be used to gain access to > offline but not-yet-released csses. > > This pachset is on top of > > b9a63d0116e8 ("Merge branch 'for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu into for-3.16") > + [1] [PATCHSET v2 cgroup/for-3.16] cgroup: post unified hierarchy fixes and updates > + [2] (REFRESHED) [PATCHSET cgroup/for-3.16] cgroup: implement cftype->write() > + [3] (REFRESHED) [PATCHSET cgroup/for-3.16] cgroup: remove cgroup_tree_mutex > + [4] [PATCHSET cgroup/for-3.16] cgroup: use css->refcnt for cgroup reference counting > > and available in the following git branch. > > git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-direct-css-iteration > > diffstat follows. Thanks. > > block/blk-cgroup.h | 2 > include/linux/cgroup.h | 122 +++++++++++--------- > kernel/cgroup.c | 257 ++++++++++++++++++++++++------------------- > kernel/cgroup_freezer.c | 2 > kernel/cpuset.c | 2 > kernel/sched/core.c | 2 > kernel/sched/cpuacct.c | 2 > mm/hugetlb_cgroup.c | 2 > mm/memcontrol.c | 45 +++---- > net/core/netclassid_cgroup.c | 2 > net/core/netprio_cgroup.c | 2 > security/device_cgroup.c | 17 -- > 12 files changed, 251 insertions(+), 206 deletions(-) > Acked-by: Li Zefan <lizefan@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html