From: Tejun Heo <tj@kernel.org>
To: paul@paulmenage.org, rjw@sisk.pl, lizf@cn.fujitsu.com
Cc: linux-pm@lists.linux-foundation.org,
linux-kernel@vger.kernel.org,
containers@lists.linux-foundation.org, fweisbec@gmail.com,
matthltc@us.ibm.com, akpm@linux-foundation.org, oleg@redhat.com,
kamezawa.hiroyu@Jp.fujitsu.com
Subject: [PATCHSET] cgroup: stable threadgroup during attach & subsys methods consolidation
Date: Tue, 1 Nov 2011 16:46:23 -0700 [thread overview]
Message-ID: <1320191193-8110-1-git-send-email-tj@kernel.org> (raw)
Hello,
NOT FOR THIS MERGE WINDOW.
This patchset is combination of the following two patchsets.
[1] cgroup: extend threadgroup locking
[2] cgroup: introduce cgroup_taskset and consolidate subsys methods, take#2
Changes from the last postings are
* 0001-cgroup-add-cgroup_root_mutex.patch replaces mutex ordering
reversal patch, which Oleg found out to be broken. Instead, a new
sub-mutex cgroup_root_mutex is introduced to break circular
dependency.
* Rebased on top of the current linus/master.
* Other minor changes to reflect comments from reviews.
* Reviewed/Acked-by's added.
This patchset addresses the following two issues.
1. cgroup currently only blocks new threads from joining the target
threadgroup during migration, and on-going migration could race
against exec and exit leading to interesting problems - the
symmetry between various attach methods, task exiting during method
execution, ->exit() racing against attach methods, migrating task
switching basic properties during exec and so on.
This is resolved by extending threadgroup locking such that it
covers all operations which can alter the threadgroup - fork, exit
and exec, and update cgroup to take advantage of it. rwsem read
ops are added to exit path but exec is excluded by grabbing the
existing cred_guard_mutex from threadgroup locking helper.
This makes threadgroup locking complete and resolves cgroup issues
stemming from the target taskset being unstable.
2. cgroup has grown quite some number of subsys methods. Some of them
are overlapping, inconsistent with each other and called under
different conditions depending on whether they're called for a
single task or whole process. Unfortunately, these callbacks are
complicated and incomplete at the same time.
* ->attach_task() is called after migration for task attach but
before for process.
* Ditto for ->pre_attach().
* ->can_attach_task() is called for every task in the thread group
->but attach_task() skips the ones which don't actually change
->cgroups.
* Task attach becomes noop if the task isn't actually moving.
Process attach is always performed.
* ->attach_task() doesn't (or at least aren't supposed to) have
access to the old cgroup.
* During cancel, there's no way to access the affected tasks.
This patchset introduces cgroup_taskset along with some accessors
and iterator, updates methods to use it, consolidates usages and
drops superflous methods.
0001-cgroup-add-cgroup_root_mutex.patch
0002-threadgroup-rename-signal-threadgroup_fork_lock-to-g.patch
0003-threadgroup-extend-threadgroup_lock-to-cover-exit-an.patch
0004-cgroup-always-lock-threadgroup-during-migration.patch
0005-cgroup-subsys-attach_task-should-be-called-after-mig.patch
0006-cgroup-improve-old-cgroup-handling-in-cgroup_attach_.patch
0007-cgroup-introduce-cgroup_taskset-and-use-it-in-subsys.patch
0008-cgroup-don-t-use-subsys-can_attach_task-or-attach_ta.patch
0009-cgroup-cpuset-don-t-use-ss-pre_attach.patch
0010-cgroup-kill-subsys-can_attach_task-pre_attach-and-at.patch
0001-0004 implement stable thread group.
0005-0010 introduce taskset and consolidate subsys callbacks.
This patchset is on top of the current linus/master 839d881074 "Merge
branch 'i2c-for-linus' of ..." and also available in the following git
branch.
git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git cgroup-cleanup
If this looks okay, I think it would be best to route this through pm
tree as there are and will be intersecting changes (mostly around
cgroup_freezer).
diffstat follows.
Documentation/cgroups/cgroups.txt | 51 ++----
block/blk-cgroup.c | 45 +++--
include/linux/cgroup.h | 31 ++-
include/linux/init_task.h | 9 -
include/linux/sched.h | 62 +++++--
kernel/cgroup.c | 320 +++++++++++++++++++++++---------------
kernel/cgroup_freezer.c | 27 +--
kernel/cpuset.c | 105 +++++-------
kernel/events/core.c | 13 -
kernel/exit.c | 17 +-
kernel/fork.c | 8
kernel/sched.c | 31 ++-
mm/memcontrol.c | 16 -
security/device_cgroup.c | 7
14 files changed, 430 insertions(+), 312 deletions(-)
Thanks.
--
tejun
[1] http://thread.gmane.org/gmane.linux.kernel/1187853
[2] http://thread.gmane.org/gmane.linux.kernel/1184375
next reply other threads:[~2011-11-01 23:46 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-01 23:46 Tejun Heo [this message]
2011-11-01 23:46 ` [PATCH 01/10] cgroup: add cgroup_root_mutex Tejun Heo
2011-11-04 8:38 ` KAMEZAWA Hiroyuki
2011-11-01 23:46 ` [PATCH 02/10] threadgroup: rename signal->threadgroup_fork_lock to ->group_rwsem Tejun Heo
2011-11-04 8:40 ` KAMEZAWA Hiroyuki
2011-11-04 15:16 ` Tejun Heo
2011-11-01 23:46 ` [PATCH 03/10] threadgroup: extend threadgroup_lock() to cover exit and exec Tejun Heo
2011-11-04 8:45 ` KAMEZAWA Hiroyuki
2011-11-13 16:44 ` Frederic Weisbecker
2011-11-14 13:54 ` Frederic Weisbecker
2011-11-21 22:03 ` Tejun Heo
2011-11-23 14:34 ` Frederic Weisbecker
2011-11-21 21:58 ` Tejun Heo
2011-11-23 14:02 ` Frederic Weisbecker
2011-11-24 21:22 ` Tejun Heo
2011-11-13 18:20 ` Frederic Weisbecker
2011-11-24 22:50 ` [PATCH UPDATED " Tejun Heo
2011-11-25 4:02 ` Linus Torvalds
2011-11-27 19:21 ` Tejun Heo
2011-11-27 21:25 ` Tejun Heo
2011-12-01 19:29 ` Tejun Heo
2011-11-25 14:01 ` Frederic Weisbecker
2011-11-27 19:30 ` Tejun Heo
2011-12-02 16:28 ` Frederic Weisbecker
2011-12-05 18:43 ` Tejun Heo
2011-12-07 15:30 ` Frederic Weisbecker
2011-12-07 18:22 ` Tejun Heo
2011-12-08 20:50 ` [PATCH UPDATED AGAIN " Tejun Heo
2011-12-09 23:42 ` Frederic Weisbecker
2011-12-13 1:33 ` Tejun Heo
2011-12-13 2:17 ` Tejun Heo
2011-11-01 23:46 ` [PATCH 04/10] cgroup: always lock threadgroup during migration Tejun Heo
2011-11-04 8:54 ` KAMEZAWA Hiroyuki
2011-11-04 15:21 ` Tejun Heo
2011-11-14 18:46 ` Frederic Weisbecker
2011-11-14 18:52 ` Frederic Weisbecker
2011-11-21 22:05 ` Tejun Heo
2011-11-01 23:46 ` [PATCH 05/10] cgroup: subsys->attach_task() should be called after migration Tejun Heo
2011-11-14 20:06 ` Frederic Weisbecker
2011-11-21 22:04 ` Tejun Heo
2011-11-01 23:46 ` [PATCH 06/10] cgroup: improve old cgroup handling in cgroup_attach_proc() Tejun Heo
2011-11-14 20:37 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 07/10] cgroup: introduce cgroup_taskset and use it in subsys->can_attach(), cancel_attach() and attach() Tejun Heo
2011-11-14 21:16 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 08/10] cgroup: don't use subsys->can_attach_task() or ->attach_task() Tejun Heo
2011-11-04 9:08 ` KAMEZAWA Hiroyuki
2011-11-14 23:54 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 09/10] cgroup, cpuset: don't use ss->pre_attach() Tejun Heo
2011-11-15 0:51 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 10/10] cgroup: kill subsys->can_attach_task(), pre_attach() and attach_task() Tejun Heo
2011-11-04 9:10 ` KAMEZAWA Hiroyuki
2011-11-15 0:54 ` Frederic Weisbecker
2011-11-21 22:07 ` [PATCHSET] cgroup: stable threadgroup during attach & subsys methods consolidation Tejun Heo
2011-11-22 2:27 ` Li Zefan
2011-11-22 16:20 ` Tejun Heo
2011-11-24 22:51 ` 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=1320191193-8110-1-git-send-email-tj@kernel.org \
--to=tj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=containers@lists.linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=kamezawa.hiroyu@Jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=lizf@cn.fujitsu.com \
--cc=matthltc@us.ibm.com \
--cc=oleg@redhat.com \
--cc=paul@paulmenage.org \
--cc=rjw@sisk.pl \
/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