From: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
mhocko-AlSwsSmVLrQ@public.gmane.org,
rjw-KKrjLPT3xs0@public.gmane.org
Cc: cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
fweisbec-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCHSET cgroup/for-3.8] cgroup_freezer: implement proper hierarchy support
Date: Sat, 3 Nov 2012 01:38:26 -0700 [thread overview]
Message-ID: <1351931915-1701-1-git-send-email-tj@kernel.org> (raw)
Hello,
This patchset implement proper hierarchy support for cgroup_freezer as
discussed in "[RFC] cgroup TODOs"[1].
The patchset first implements generic cgroup iteration macros -
cgroup_for_each_children(), cgroup_for_each_descendant_{pre|post}().
Combined with the newly introduced ->post_create() callback, this
allows controllers to implement reliable iteration over descendants
without messing with cgroup internal locking. Controllers can perform
reliable walking using simple hierarchy-wide locking or finer-grained
parent-children locking.
Using the iteration macros and ->post_create(), cgroup_freezer is
updated to propagate state updates to and collect FROZEN completions
from the descendants. This removes .broken_hierarchy marking from
cgroup_freezer.
cgroup_freezer hierarchy support is implemented using finer-grained
locking not necessarily because it's necessary but more because I
wanted an example controller doing that.
This patchset contains the following nine patches.
0001-cgroup-add-cgroup_subsys-post_create.patch
0002-cgroup-Use-rculist-ops-for-cgroup-children.patch
0003-cgroup-implement-generic-child-descendant-walk-macro.patch
0004-cgroup_freezer-trivial-cleanups.patch
0005-cgroup_freezer-prepare-freezer_change_state-for-full.patch
0006-cgroup_freezer-make-freezer-state-mask-of-flags.patch
0007-cgroup_freezer-introduce-CGROUP_FREEZING_-SELF-PAREN.patch
0008-cgroup_freezer-add-post_create-and-pre_destroy-and-t.patch
0009-cgroup_freezer-implement-proper-hierarchy-support.patch
0001-0003 implement cgroup descendant iterators.
0004-0008 prepare cgroup_freezer for hierarchy support. 0009
implements it.
This patchset is on top of
v3.6 (a0d271cbfe)
+ [2] the first three patches of
"memcg/cgroup: do not fail fail on pre_destroy callbacks" patchset
+ [3] "cgroup: simplify cgroup removal path" v2 patchset
with cgroup/for-3.8 pulled into it. The branch is rather floaty at
the moment so it would be the easiest to pull the following branch for
review.
git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-cgroup_freezer-hierarchy
Thanks.
kernel/cgroup.c | 106 +++++++++++++-
kernel/cgroup_freezer.c | 359 +++++++++++++++++++++++++++++++++++-------------
3 files changed, 445 insertions(+), 104 deletions(-)
--
tejun
[1] http://thread.gmane.org/gmane.linux.kernel.containers/23698
[2] http://thread.gmane.org/gmane.linux.kernel.cgroups/4757
[3] http://thread.gmane.org/gmane.linux.kernel.cgroups/4861
next reply other threads:[~2012-11-03 8:38 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-03 8:38 Tejun Heo [this message]
2012-11-08 18:01 ` [PATCHSET cgroup/for-3.8] cgroup_freezer: implement proper hierarchy support Tejun Heo
[not found] ` <1351931915-1701-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-03 8:38 ` [PATCH 1/9] cgroup: add cgroup_subsys->post_create() Tejun Heo
[not found] ` <1351931915-1701-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-05 13:42 ` Glauber Costa
[not found] ` <5097C23B.3040808-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-11-05 18:02 ` [RFC] cgroup: deprecate clone_children Tejun Heo
[not found] ` <20121105180213.GB19354-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2012-11-05 19:17 ` Serge Hallyn
2012-11-05 19:26 ` Tejun Heo
2012-11-07 15:25 ` [PATCH 1/9] cgroup: add cgroup_subsys->post_create() Michal Hocko
[not found] ` <20121107152516.GA4131-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-11-07 17:02 ` Tejun Heo
2012-11-07 17:15 ` [PATCH 1/9 v2] " Tejun Heo
[not found] ` <20121107171508.GF2660-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2012-11-07 17:40 ` Michal Hocko
2012-11-08 2:59 ` Kamezawa Hiroyuki
2012-11-08 19:07 ` [PATCH 1/9 v3] " Tejun Heo
2012-11-09 9:09 ` Li Zefan
[not found] ` <20121108190715.GD9672-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-11-09 9:09 ` Li Zefan
2012-11-09 11:09 ` Daniel Wagner
[not found] ` <509CE472.9040504-kQCPcA+X3s7YtjvyW6yDsg@public.gmane.org>
2012-11-09 17:22 ` Tejun Heo
[not found] ` <20121109172211.GB2711-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-11-10 1:35 ` Glauber Costa
2012-11-12 13:04 ` Daniel Wagner
2012-11-03 8:38 ` [PATCH 2/9] cgroup: Use rculist ops for cgroup->children Tejun Heo
2012-11-07 15:30 ` Michal Hocko
[not found] ` <1351931915-1701-3-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-08 3:01 ` Kamezawa Hiroyuki
2012-11-09 9:10 ` Li Zefan
2012-11-03 8:38 ` [PATCH 3/9] cgroup: implement generic child / descendant walk macros Tejun Heo
2012-11-06 20:31 ` Tejun Heo
[not found] ` <20121106203154.GV30069-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2012-11-07 15:38 ` Michal Hocko
2012-11-07 16:54 ` Michal Hocko
[not found] ` <20121107165457.GD4131-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-11-07 17:01 ` Tejun Heo
[not found] ` <20121107170118.GD2660-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2012-11-07 17:49 ` Michal Hocko
[not found] ` <1351931915-1701-4-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-08 3:21 ` Kamezawa Hiroyuki
2012-11-08 9:50 ` Michal Hocko
2012-11-08 17:15 ` Tejun Heo
2012-11-08 17:59 ` [PATCH 3/9 v2] " Tejun Heo
[not found] ` <20121108175946.GA9672-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-11-09 9:13 ` Li Zefan
2012-11-03 8:38 ` [PATCH 4/9] cgroup_freezer: trivial cleanups Tejun Heo
[not found] ` <1351931915-1701-5-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-08 3:24 ` Kamezawa Hiroyuki
2012-11-08 9:53 ` Michal Hocko
2012-11-03 8:38 ` [PATCH 5/9] cgroup_freezer: prepare freezer_change_state() for full hierarchy support Tejun Heo
[not found] ` <1351931915-1701-6-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-08 4:25 ` Kamezawa Hiroyuki
2012-11-08 9:56 ` Michal Hocko
2012-11-03 8:38 ` [PATCH 6/9] cgroup_freezer: make freezer->state mask of flags Tejun Heo
[not found] ` <1351931915-1701-7-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-08 4:37 ` Kamezawa Hiroyuki
[not found] ` <509B371E.9050005-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2012-11-08 4:42 ` Tejun Heo
[not found] ` <20121108044255.GG2660-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2012-11-08 5:00 ` Kamezawa Hiroyuki
2012-11-08 14:38 ` Tejun Heo
2012-11-08 10:39 ` Michal Hocko
[not found] ` <20121108103928.GD31821-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-11-08 14:39 ` Tejun Heo
[not found] ` <20121108143952.GD12973-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-11-08 14:47 ` Michal Hocko
2012-11-03 8:38 ` [PATCH 7/9] cgroup_freezer: introduce CGROUP_FREEZING_[SELF|PARENT] Tejun Heo
[not found] ` <1351931915-1701-8-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-08 4:42 ` Kamezawa Hiroyuki
[not found] ` <509B382E.4030707-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2012-11-08 4:45 ` Tejun Heo
2012-11-08 4:56 ` Kamezawa Hiroyuki
[not found] ` <509B3B94.1070407-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2012-11-08 14:41 ` Tejun Heo
2012-11-08 12:47 ` Michal Hocko
2012-11-08 14:42 ` Tejun Heo
2012-11-03 8:38 ` [PATCH 8/9] cgroup_freezer: add ->post_create() and ->pre_destroy() and track online state Tejun Heo
[not found] ` <1351931915-1701-9-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-08 4:48 ` Kamezawa Hiroyuki
[not found] ` <509B3999.6060505-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2012-11-08 15:41 ` Tejun Heo
2012-11-08 13:23 ` Michal Hocko
[not found] ` <20121108132306.GH31821-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-11-08 17:17 ` Tejun Heo
2012-11-03 8:38 ` [PATCH 9/9] cgroup_freezer: implement proper hierarchy support Tejun Heo
2012-11-07 11:00 ` Michal Hocko
2012-11-07 16:31 ` Tejun Heo
[not found] ` <1351931915-1701-10-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-11-07 16:39 ` [PATCH 9/9 v2] " Tejun Heo
[not found] ` <20121107163919.GC2660-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2012-11-08 14:08 ` Michal Hocko
[not found] ` <20121108140852.GI31821-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-11-08 14:18 ` Tejun Heo
2012-11-08 15:20 ` Michal Hocko
[not found] ` <20121108152039.GL31821-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-11-08 15:29 ` Tejun Heo
2012-11-08 15:57 ` Michal Hocko
2012-11-08 17:57 ` [PATCH 9/9 v3] " Tejun Heo
[not found] ` <20121108175750.GK12973-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-11-08 18:02 ` Michal Hocko
[not found] ` <20121108180246.GA17415-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-11-08 18:04 ` Tejun Heo
[not found] ` <20121108180417.GC9672-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-11-08 18:08 ` Michal Hocko
2012-11-09 17:15 ` [PATCHSET cgroup/for-3.8] " Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1351931915-1701-1-git-send-email-tj@kernel.org \
--to=tj-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=fweisbec-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
--cc=mhocko-AlSwsSmVLrQ@public.gmane.org \
--cc=rjw-KKrjLPT3xs0@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).