From: Daniel Wagner Subject: Re: [PATCH v2 08/23] cgroup: pass around cgroup_subsys_state instead of cgroup in subsystem methods Date: Tue, 6 Aug 2013 09:19:45 +0200 Message-ID: <5200A391.9030208@bmw-carit.de> References: <1375393801-4817-1-git-send-email-tj@kernel.org> <1375393801-4817-9-git-send-email-tj@kernel.org> <20130802202408.GH29736@mtj.dyndns.org> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20130802202408.GH29736-9pTldWuhBndy/B6EtB590w@public.gmane.org> Sender: cgroups-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Content-Type: text/plain; charset="us-ascii"; format="flowed" To: Tejun Heo Cc: lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org, containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Peter Zijlstra , Ingo Molnar , Johannes Weiner , Michal Hocko , Balbir Singh , Aristeu Rozanski , Matt Helsley , Vivek Goyal , Jens Axboe , Steven Rostedt On 08/02/2013 10:24 PM, Tejun Heo wrote: > cgroup is currently in the process of transitioning to using struct > cgroup_subsys_state * as the primary handle instead of struct cgroup * > in subsystem implementations for the following reasons. > > * With unified hierarchy, subsystems will be dynamically bound and > unbound from cgroups and thus css's (cgroup_subsys_state) may be > created and destroyed dynamically over the lifetime of a cgroup, > which is different from the current state where all css's are > allocated and destroyed together with the associated cgroup. This > in turn means that cgroup_css() should be synchronized and may > return NULL, making it more cumbersome to use. > > * Differing levels of per-subsystem granularity in the unified > hierarchy means that the task and descendant iterators should behave > differently depending on the specific subsystem the iteration is > being performed for. > > * In majority of the cases, subsystems only care about its part in the > cgroup hierarchy - ie. the hierarchy of css's. Subsystem methods > often obtain the matching css pointer from the cgroup and don't > bother with the cgroup pointer itself. Passing around css fits > much better. > > This patch converts all cgroup_subsys methods to take @css instead of > @cgroup. The conversions are mostly straight-forward. A few > noteworthy changes are > > * ->css_alloc() now takes css of the parent cgroup rather than the > pointer to the new cgroup as the css for the new cgroup doesn't > exist yet. Knowing the parent css is enough for all the existing > subsystems. > > * In kernel/cgroup.c::offline_css(), unnecessary open coded css > dereference is replaced with local variable access. > > This patch shouldn't cause any behavior differences. > > v2: Unnecessary explicit cgrp->subsys[] deref in css_online() replaced > with local variable @css as suggested by Li Zefan. > > Rebased on top of new for-3.12 which includes for-3.11-fixes so > that ->css_free() invocation added by da0a12caff ("cgroup: fix a > leak when percpu_ref_init() fails") is converted too. Suggested > by Li Zefan. > > Signed-off-by: Tejun Heo > Acked-by: Li Zefan > Acked-by: Michal Hocko > Cc: Peter Zijlstra > Cc: Ingo Molnar > Cc: Johannes Weiner > Cc: Balbir Singh > Cc: Aristeu Rozanski > Cc: Matt Helsley > Cc: Daniel Wagner > Cc: Vivek Goyal > Cc: Jens Axboe > Cc: Steven Rostedt netprio and cls part: Acked-By: Daniel Wagner cheers, daniel