From: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: rjw-KKrjLPT3xs0@public.gmane.org,
oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCHSET cgroup/for-3.8] cgroup_freezer: allow migration regardless of freezer state and update locking
Date: Tue, 16 Oct 2012 15:28:39 -0700 [thread overview]
Message-ID: <1350426526-14254-1-git-send-email-tj@kernel.org> (raw)
Hello,
This patchset updates cgroup_freezer so that
* Unfreezable kernel tasks don't prevent a cgroup from transitioning
into FROZEN from FREEZING. There's nothing userland can do with or
about such tasks.
* Tasks can be moved in and out of a frozen cgroup. Tasks are made to
conform to the state of the new cgroup during migration. This
behavior makes a lot more sense and removes the use of
->can_attach() which makes co-mounting difficult.
* Remove use of cgroup_lock_live_group(). Grabbing cgroup_lock from
outside cgroup proper creates a painful locking dependency and is
being phased out. With the above behavior change, removing
dependency on cgroup_lock is pretty easy. IMHO, it was simply the
wrong behavior to implement which forced the wrong implementation.
This patchset contains the following seven patches.
0001-cgroup-cgroup_subsys-fork-should-be-called-after-the.patch
0002-freezer-add-missing-mb-s-to-freezer_count-and-freeze.patch
0003-cgroup_freezer-make-it-official-that-writes-to-freez.patch
0004-cgroup_freezer-don-t-stall-transition-to-FROZEN-for-.patch
0005-cgroup_freezer-allow-moving-tasks-in-and-out-of-a-fr.patch
0006-cgroup_freezer-prepare-update_if_frozen-for-locking-.patch
0007-cgroup_freezer-don-t-use-cgroup_lock_live_group.patch
0001 is a fix for a rather embarrassing bug in cgroup core. It does
things in the wrong order leaving a window for racing during fork.
0002 adds a missing mb() around freezing condition updates / checks.
0003-0004 make cgroup_freezer ignore unfreezable kernel tasks and
handle PF_FREEZER_SKIP correctly.
0005 allows migrating tasks in and out of a frozen cgroup.
0006-0007 remove the use of cgroup_lock_live_group().
This patchset is on top of v3.7-rc1 and available in the following git
branch.
git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-cgroup_freezer-locking
include/linux/cgroup.h | 1
include/linux/freezer.h | 50 +++++++++--
kernel/cgroup.c | 62 ++++++--------
kernel/cgroup_freezer.c | 210 ++++++++++++++++--------------------------------
kernel/fork.c | 9 --
5 files changed, 147 insertions(+), 185 deletions(-)
Thanks.
--
tejun
WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj@kernel.org>
To: rjw@sisk.pl, oleg@redhat.com
Cc: linux-kernel@vger.kernel.org, lizefan@huawei.com,
containers@lists.linux-foundation.org, cgroups@vger.kernel.org
Subject: [PATCHSET cgroup/for-3.8] cgroup_freezer: allow migration regardless of freezer state and update locking
Date: Tue, 16 Oct 2012 15:28:39 -0700 [thread overview]
Message-ID: <1350426526-14254-1-git-send-email-tj@kernel.org> (raw)
Hello,
This patchset updates cgroup_freezer so that
* Unfreezable kernel tasks don't prevent a cgroup from transitioning
into FROZEN from FREEZING. There's nothing userland can do with or
about such tasks.
* Tasks can be moved in and out of a frozen cgroup. Tasks are made to
conform to the state of the new cgroup during migration. This
behavior makes a lot more sense and removes the use of
->can_attach() which makes co-mounting difficult.
* Remove use of cgroup_lock_live_group(). Grabbing cgroup_lock from
outside cgroup proper creates a painful locking dependency and is
being phased out. With the above behavior change, removing
dependency on cgroup_lock is pretty easy. IMHO, it was simply the
wrong behavior to implement which forced the wrong implementation.
This patchset contains the following seven patches.
0001-cgroup-cgroup_subsys-fork-should-be-called-after-the.patch
0002-freezer-add-missing-mb-s-to-freezer_count-and-freeze.patch
0003-cgroup_freezer-make-it-official-that-writes-to-freez.patch
0004-cgroup_freezer-don-t-stall-transition-to-FROZEN-for-.patch
0005-cgroup_freezer-allow-moving-tasks-in-and-out-of-a-fr.patch
0006-cgroup_freezer-prepare-update_if_frozen-for-locking-.patch
0007-cgroup_freezer-don-t-use-cgroup_lock_live_group.patch
0001 is a fix for a rather embarrassing bug in cgroup core. It does
things in the wrong order leaving a window for racing during fork.
0002 adds a missing mb() around freezing condition updates / checks.
0003-0004 make cgroup_freezer ignore unfreezable kernel tasks and
handle PF_FREEZER_SKIP correctly.
0005 allows migrating tasks in and out of a frozen cgroup.
0006-0007 remove the use of cgroup_lock_live_group().
This patchset is on top of v3.7-rc1 and available in the following git
branch.
git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-cgroup_freezer-locking
include/linux/cgroup.h | 1
include/linux/freezer.h | 50 +++++++++--
kernel/cgroup.c | 62 ++++++--------
kernel/cgroup_freezer.c | 210 ++++++++++++++++--------------------------------
kernel/fork.c | 9 --
5 files changed, 147 insertions(+), 185 deletions(-)
Thanks.
--
tejun
next reply other threads:[~2012-10-16 22:28 UTC|newest]
Thread overview: 149+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-16 22:28 Tejun Heo [this message]
2012-10-16 22:28 ` [PATCHSET cgroup/for-3.8] cgroup_freezer: allow migration regardless of freezer state and update locking Tejun Heo
2012-10-16 22:28 ` [PATCH 5/7] cgroup_freezer: allow moving tasks in and out of a frozen cgroup Tejun Heo
[not found] ` <1350426526-14254-6-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-10-22 19:25 ` Oleg Nesterov
2012-10-22 19:25 ` Oleg Nesterov
[not found] ` <20121022192506.GA27163-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-22 21:25 ` Tejun Heo
2012-10-22 21:25 ` Tejun Heo
2012-10-22 21:25 ` Tejun Heo
[not found] ` <20121022212505.GG5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org>
2012-10-23 16:14 ` Oleg Nesterov
2012-10-23 16:14 ` Oleg Nesterov
2012-10-23 16:14 ` Oleg Nesterov
2012-10-22 19:25 ` Oleg Nesterov
[not found] ` <1350426526-14254-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-10-16 22:28 ` [PATCH 1/7] cgroup: cgroup_subsys->fork() should be called after the task is added to css_set Tejun Heo
2012-10-16 22:28 ` Tejun Heo
[not found] ` <1350426526-14254-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-10-17 8:28 ` Li Zefan
2012-10-17 8:28 ` Li Zefan
[not found] ` <507E6C4B.6000704-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2012-10-18 1:25 ` Li Zefan
2012-10-18 1:25 ` Li Zefan
2012-10-18 1:25 ` Li Zefan
2012-10-21 19:11 ` Oleg Nesterov
2012-10-21 19:11 ` Oleg Nesterov
[not found] ` <20121021191141.GA26218-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-21 19:22 ` Tejun Heo
2012-10-21 19:22 ` Tejun Heo
2012-10-21 19:22 ` Tejun Heo
[not found] ` <20121021192222.GB5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org>
2012-10-22 18:04 ` Oleg Nesterov
2012-10-22 18:04 ` Oleg Nesterov
[not found] ` <20121022180445.GB21553-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-22 21:16 ` Tejun Heo
2012-10-22 21:16 ` Tejun Heo
[not found] ` <20121022211631.GE5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org>
2012-10-23 15:51 ` Oleg Nesterov
2012-10-23 15:51 ` Oleg Nesterov
[not found] ` <20121023155128.GB16201-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-24 19:04 ` Tejun Heo
2012-10-24 19:04 ` Tejun Heo
[not found] ` <20121024190458.GB12182-OlzNCW9NnSVy/B6EtB590w@public.gmane.org>
2012-10-25 17:42 ` Oleg Nesterov
2012-10-25 17:42 ` Oleg Nesterov
2012-12-20 5:25 ` Herton Ronaldo Krzesinski
2012-12-20 5:25 ` Herton Ronaldo Krzesinski
2012-12-28 21:22 ` [PATCH] cgroup: remove unused dummy cgroup_fork_callbacks() Tejun Heo
2012-12-28 21:22 ` Tejun Heo
2012-10-16 22:28 ` [PATCH 2/7] freezer: add missing mb's to freezer_count() and freezer_should_skip() Tejun Heo
2012-10-16 22:28 ` Tejun Heo
[not found] ` <1350426526-14254-3-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-10-22 17:44 ` Oleg Nesterov
2012-10-22 17:44 ` Oleg Nesterov
[not found] ` <20121022174404.GA21553-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-22 21:13 ` Tejun Heo
2012-10-22 21:13 ` Tejun Heo
[not found] ` <20121022211317.GD5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org>
2012-10-23 15:39 ` Oleg Nesterov
2012-10-23 15:39 ` Oleg Nesterov
[not found] ` <20121023153919.GA16201-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-24 18:57 ` Tejun Heo
2012-10-24 18:57 ` Tejun Heo
2012-10-24 18:57 ` Tejun Heo
[not found] ` <20121024185710.GA12182-OlzNCW9NnSVy/B6EtB590w@public.gmane.org>
2012-10-25 16:39 ` [PATCH 0/1] (Was: freezer: add missing mb's to freezer_count() and freezer_should_skip()) Oleg Nesterov
2012-10-25 16:39 ` Oleg Nesterov
[not found] ` <20121025163941.GA3801-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-25 16:39 ` [PATCH 1/1] freezer: change ptrace_stop/do_signal_stop to use freezable_schedule() Oleg Nesterov
2012-10-25 16:39 ` Oleg Nesterov
[not found] ` <20121025163959.GB3801-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-25 17:18 ` Tejun Heo
2012-10-25 17:18 ` Tejun Heo
[not found] ` <20121025171812.GE11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-10-25 17:34 ` Oleg Nesterov
2012-10-25 17:34 ` Oleg Nesterov
2012-10-25 17:34 ` Oleg Nesterov
[not found] ` <20121025173433.GA7650-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-25 17:36 ` Tejun Heo
2012-10-25 17:36 ` Tejun Heo
[not found] ` <20121025173632.GI11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-10-26 17:45 ` [PATCH v2 0/1] " Oleg Nesterov
2012-10-26 17:45 ` Oleg Nesterov
[not found] ` <20121026174545.GA21639-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-26 17:46 ` [PATCH v2 1/1] " Oleg Nesterov
2012-10-26 17:46 ` Oleg Nesterov
[not found] ` <20121026174606.GB21639-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-26 17:52 ` Tejun Heo
2012-10-26 17:52 ` Tejun Heo
[not found] ` <20121026175258.GV11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-10-26 18:01 ` Oleg Nesterov
2012-10-26 18:01 ` Oleg Nesterov
2012-10-26 18:01 ` Oleg Nesterov
[not found] ` <20121026180149.GA22421-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-26 21:14 ` Rafael J. Wysocki
2012-10-26 21:14 ` Rafael J. Wysocki
2012-10-26 21:14 ` Rafael J. Wysocki
[not found] ` <2566006.UzAQbpOjNQ-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2012-10-26 21:29 ` Rafael J. Wysocki
2012-10-26 21:29 ` Rafael J. Wysocki
[not found] ` <2718983.vORnrfWdbE-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2012-10-26 21:29 ` Tejun Heo
2012-10-26 21:29 ` Tejun Heo
2012-10-26 21:29 ` Tejun Heo
[not found] ` <20121026212909.GW11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-10-28 0:16 ` Rafael J. Wysocki
2012-10-28 0:16 ` Rafael J. Wysocki
2012-10-28 0:16 ` Rafael J. Wysocki
2012-10-27 22:22 ` Ben Hutchings
2012-10-27 22:22 ` Ben Hutchings
2012-10-27 22:22 ` Ben Hutchings
[not found] ` <1351376558.21585.1.camel-nDn/Rdv9kqW9Jme8/bJn5UCKIB8iOfG2tUK59QYPAWc@public.gmane.org>
2012-10-28 13:45 ` Oleg Nesterov
2012-10-28 13:45 ` Oleg Nesterov
2012-10-25 17:18 ` [PATCH " Tejun Heo
2012-10-16 22:28 ` [PATCH 3/7] cgroup_freezer: make it official that writes to freezer.state don't fail Tejun Heo
2012-10-16 22:28 ` Tejun Heo
2012-10-16 22:28 ` [PATCH 4/7] cgroup_freezer: don't stall transition to FROZEN for PF_NOFREEZE or PF_FREEZER_SKIP tasks Tejun Heo
2012-10-16 22:28 ` Tejun Heo
[not found] ` <1350426526-14254-5-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2012-10-22 18:34 ` Oleg Nesterov
2012-10-22 18:34 ` Oleg Nesterov
[not found] ` <20121022183453.GA24687-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-22 21:18 ` Tejun Heo
2012-10-22 21:18 ` Tejun Heo
[not found] ` <20121022211822.GF5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org>
2012-10-23 15:55 ` Oleg Nesterov
2012-10-23 15:55 ` Oleg Nesterov
[not found] ` <20121023155533.GC16201-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-24 19:06 ` Tejun Heo
2012-10-24 19:06 ` Tejun Heo
[not found] ` <20121024190651.GC12182-OlzNCW9NnSVy/B6EtB590w@public.gmane.org>
2012-10-25 17:12 ` [PATCH 0/1] (Was: cgroup_freezer: don't stall transition to FROZEN for PF_NOFREEZE or PF_FREEZER_SKIP tasks) Oleg Nesterov
2012-10-25 17:12 ` Oleg Nesterov
[not found] ` <20121025171236.GA6776-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-25 17:12 ` [PATCH 1/1] freezer: exec should clear PF_NOFREEZE along with PF_KTHREAD Oleg Nesterov
2012-10-25 17:12 ` Oleg Nesterov
[not found] ` <20121025171256.GB6776-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-25 17:20 ` Tejun Heo
2012-10-25 17:20 ` Tejun Heo
2012-10-25 17:20 ` Tejun Heo
[not found] ` <20121025172016.GF11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-10-25 17:37 ` Oleg Nesterov
2012-10-25 17:37 ` Oleg Nesterov
[not found] ` <20121025173756.GB7650-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-25 17:37 ` Tejun Heo
2012-10-25 17:37 ` Tejun Heo
[not found] ` <CAOS58YPAVVr=itauGD9eTpfRLSBLuM8Bpyuq9AP73MDr8dPmiQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-25 20:13 ` Rafael J. Wysocki
2012-10-25 20:13 ` Rafael J. Wysocki
2012-10-23 15:55 ` [PATCH 4/7] cgroup_freezer: don't stall transition to FROZEN for PF_NOFREEZE or PF_FREEZER_SKIP tasks Oleg Nesterov
2012-10-22 18:34 ` Oleg Nesterov
2012-10-16 22:28 ` [PATCH 5/7] cgroup_freezer: allow moving tasks in and out of a frozen cgroup Tejun Heo
2012-10-16 22:28 ` [PATCH 6/7] cgroup_freezer: prepare update_if_frozen() for locking change Tejun Heo
2012-10-16 22:28 ` Tejun Heo
2012-10-16 22:28 ` [PATCH 7/7] cgroup_freezer: don't use cgroup_lock_live_group() Tejun Heo
2012-10-16 22:28 ` Tejun Heo
2012-10-17 19:16 ` [PATCHSET cgroup/for-3.8] cgroup_freezer: allow migration regardless of freezer state and update locking Matt Helsley
2012-10-17 19:16 ` Matt Helsley
[not found] ` <20121017191606.GA6223-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2012-10-18 21:14 ` Tejun Heo
2012-10-18 21:14 ` Tejun Heo
[not found] ` <20121018211434.GI13370-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-10-18 22:21 ` Matt Helsley
2012-10-18 22:21 ` Matt Helsley
[not found] ` <20121018222155.GB6223-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2012-10-18 22:35 ` Tejun Heo
2012-10-18 22:35 ` Tejun Heo
[not found] ` <20121018223517.GQ13370-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-10-18 23:47 ` Matt Helsley
2012-10-18 23:47 ` Matt Helsley
[not found] ` <20121018234726.GC6223-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2012-10-19 0:01 ` Tejun Heo
2012-10-19 0:01 ` Tejun Heo
[not found] ` <20121019000153.GZ13370-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-10-19 1:29 ` Matt Helsley
2012-10-19 1:29 ` Matt Helsley
[not found] ` <20121019012945.GD6223-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2012-10-19 20:02 ` Tejun Heo
2012-10-19 20:02 ` Tejun Heo
2012-10-19 20:02 ` Tejun Heo
2012-10-19 1:29 ` Matt Helsley
2012-10-19 0:01 ` Tejun Heo
2012-10-18 21:14 ` Tejun Heo
2012-10-19 16:54 ` Rafael J. Wysocki
2012-10-19 16:54 ` Rafael J. Wysocki
2012-10-19 16:54 ` Rafael J. Wysocki
[not found] ` <2424755.Pg0O5tTD3k-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2012-10-19 20:04 ` Tejun Heo
2012-10-19 20:04 ` Tejun Heo
[not found] ` <20121019200421.GO13370-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-10-21 19:18 ` Oleg Nesterov
2012-10-21 19:18 ` Oleg Nesterov
[not found] ` <20121021191853.GB26218-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-10-21 19:24 ` Tejun Heo
2012-10-21 19:24 ` Tejun Heo
2012-10-19 20:04 ` Tejun Heo
-- strict thread matches above, loose matches on Subject: below --
2012-10-16 22:28 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=1350426526-14254-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=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
--cc=oleg-H+wXaHxf7aLQT0dZR+AlfA@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.