All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: rjw@sisk.pl, paul@paulmenage.org, lizf@cn.fujitsu.com
Cc: linux-pm@lists.linux-foundation.org,
	linux-kernel@vger.kernel.org,
	containers@lists.linux-foundation.org, Tejun Heo <tj@kernel.org>
Subject: [PATCH 5/6] cgroup, cpuset: don't use ss->pre_attach()
Date: Wed, 24 Aug 2011 00:19:59 +0200	[thread overview]
Message-ID: <1314138000-2049-6-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1314138000-2049-1-git-send-email-tj@kernel.org>

->pre_attach() is supposed to be called before migration, which is
observed during process migration but task migration does it the other
way around.  The only ->pre_attach() user is cpuset which can do the
same operaitons in ->can_attach().  Collapse cpuset_pre_attach() into
cpuset_can_attach().

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Paul Menage <paul@paulmenage.org>
Cc: Li Zefan <lizf@cn.fujitsu.com>
---
 Documentation/cgroups/cgroups.txt |   20 --------------------
 kernel/cpuset.c                   |   29 ++++++++++++-----------------
 2 files changed, 12 insertions(+), 37 deletions(-)

diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt
index 2eee7cf..afb7cde 100644
--- a/Documentation/cgroups/cgroups.txt
+++ b/Documentation/cgroups/cgroups.txt
@@ -610,13 +610,6 @@ called on a fork. If this method returns 0 (success) then this should
 remain valid while the caller holds cgroup_mutex and it is ensured
 that either attach() or cancel_attach() will be called in future.
 
-int can_attach_task(struct cgroup *cgrp, struct task_struct *tsk);
-(cgroup_mutex held by caller)
-
-As can_attach, but for operations that must be run once per task to be
-attached (possibly many when using cgroup_attach_proc). Called after
-can_attach.
-
 void cancel_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
 		   struct cgroup_taskset *tset)
 (cgroup_mutex held by caller)
@@ -627,12 +620,6 @@ function, so that the subsystem can implement a rollback. If not, not necessary.
 This will be called only about subsystems whose can_attach() operation have
 succeeded. The parameters are identical to can_attach().
 
-void pre_attach(struct cgroup *cgrp);
-(cgroup_mutex held by caller)
-
-For any non-per-thread attachment work that needs to happen before
-attach_task. Needed by cpuset.
-
 void attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
 	    struct cgroup_taskset *tset)
 (cgroup_mutex held by caller)
@@ -641,13 +628,6 @@ Called after the task has been attached to the cgroup, to allow any
 post-attachment activity that requires memory allocations or blocking.
 The parameters are identical to can_attach().
 
-void attach_task(struct cgroup *cgrp, struct task_struct *tsk);
-(cgroup_mutex held by caller)
-
-As attach, but for operations that must be run once per task to be attached,
-like can_attach_task. Called before attach. Currently does not support any
-subsystem that might need the old_cgrp for every thread in the group.
-
 void fork(struct cgroup_subsy *ss, struct task_struct *task)
 
 Called when a task is forked into a cgroup.
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 472ddd6..f0b8df3 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -1367,6 +1367,15 @@ static int fmeter_getrate(struct fmeter *fmp)
 	return val;
 }
 
+/*
+ * Protected by cgroup_lock. The nodemasks must be stored globally because
+ * dynamically allocating them is not allowed in can_attach, and they must
+ * persist until attach.
+ */
+static cpumask_var_t cpus_attach;
+static nodemask_t cpuset_attach_nodemask_from;
+static nodemask_t cpuset_attach_nodemask_to;
+
 /* Called by cgroups to determine if a cpuset is usable; cgroup_mutex held */
 static int cpuset_can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
 			     struct cgroup_taskset *tset)
@@ -1393,29 +1402,16 @@ static int cpuset_can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
 		if ((ret = security_task_setscheduler(task)))
 			return ret;
 	}
-	return 0;
-}
-
-/*
- * Protected by cgroup_lock. The nodemasks must be stored globally because
- * dynamically allocating them is not allowed in pre_attach, and they must
- * persist among pre_attach, and attach.
- */
-static cpumask_var_t cpus_attach;
-static nodemask_t cpuset_attach_nodemask_from;
-static nodemask_t cpuset_attach_nodemask_to;
-
-/* Set-up work for before attaching each task. */
-static void cpuset_pre_attach(struct cgroup *cont)
-{
-	struct cpuset *cs = cgroup_cs(cont);
 
+	/* prepare for attach */
 	if (cs == &top_cpuset)
 		cpumask_copy(cpus_attach, cpu_possible_mask);
 	else
 		guarantee_online_cpus(cs, cpus_attach);
 
 	guarantee_online_mems(cs, &cpuset_attach_nodemask_to);
+
+	return 0;
 }
 
 static void cpuset_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
@@ -1901,7 +1897,6 @@ struct cgroup_subsys cpuset_subsys = {
 	.create = cpuset_create,
 	.destroy = cpuset_destroy,
 	.can_attach = cpuset_can_attach,
-	.pre_attach = cpuset_pre_attach,
 	.attach = cpuset_attach,
 	.populate = cpuset_populate,
 	.post_clone = cpuset_post_clone,
-- 
1.7.6


  parent reply	other threads:[~2011-08-23 22:20 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-23 22:19 [PATCHSET] cgroup: introduce cgroup_taskset and consolidate subsys methods Tejun Heo
2011-08-23 22:19 ` [PATCH 1/6] cgroup: subsys->attach_task() should be called after migration Tejun Heo
2011-08-23 22:19 ` Tejun Heo
2011-08-24  0:32   ` Frederic Weisbecker
     [not found]   ` <1314138000-2049-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-08-24  0:32     ` Frederic Weisbecker
2011-08-24  0:32   ` Frederic Weisbecker
2011-08-24  1:31     ` Li Zefan
2011-08-24  1:31     ` Li Zefan
2011-08-24  1:31     ` Li Zefan
2011-08-23 22:19 ` [PATCH 2/6] cgroup: improve old cgroup handling in cgroup_attach_proc() Tejun Heo
2011-08-25  8:51   ` Paul Menage
2011-08-25  8:51   ` Paul Menage
2011-08-25  9:03     ` Tejun Heo
     [not found]     ` <CALdu-PAj1ZUmB2ixxA6yeppB8MerBGk1cSeQadobH0H4cRSe7Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-25  9:03       ` Tejun Heo
2011-08-25  9:03     ` Tejun Heo
     [not found]   ` <1314138000-2049-3-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-08-25  8:51     ` Paul Menage
2011-08-25  9:42     ` Paul Menage
2011-08-25  9:42   ` Paul Menage
2011-08-25  9:42   ` Paul Menage
     [not found]     ` <CALdu-PBr-tu1qzScvncr-N4EpPaQ7sTdHf28GhEv_MZLbo1eSg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-25  9:44       ` Tejun Heo
2011-08-25  9:44     ` Tejun Heo
2011-08-25  9:44     ` Tejun Heo
2011-08-23 22:19 ` Tejun Heo
2011-08-23 22:19 ` [PATCH 3/6] cgroup: introduce cgroup_taskset and use it in subsys->can_attach(), cancel_attach() and attach() Tejun Heo
     [not found]   ` <1314138000-2049-4-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-08-25  0:39     ` KAMEZAWA Hiroyuki
2011-08-25  9:14     ` Paul Menage
2011-08-25  9:32     ` Paul Menage
2011-08-25  0:39   ` KAMEZAWA Hiroyuki
2011-08-25  0:39   ` KAMEZAWA Hiroyuki
     [not found]     ` <20110825093958.75b95bd8.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2011-08-25  8:20       ` Tejun Heo
2011-08-25  8:20     ` Tejun Heo
     [not found]       ` <20110825082049.GC3286-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2011-08-25  8:21         ` KAMEZAWA Hiroyuki
2011-08-25  8:21       ` KAMEZAWA Hiroyuki
2011-08-25  8:21       ` KAMEZAWA Hiroyuki
     [not found]         ` <20110825172140.eb34809f.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2011-08-25  8:40           ` Tejun Heo
2011-08-25  8:40         ` Tejun Heo
2011-08-25  8:40         ` Tejun Heo
     [not found]           ` <CAOS58YPM=cuWjAF+VJ4QJ8bnRcVtaDCVXBJCpdWg+2=2GmnKrA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-25  8:37             ` KAMEZAWA Hiroyuki
2011-08-25  8:37           ` KAMEZAWA Hiroyuki
2011-08-25  8:37           ` KAMEZAWA Hiroyuki
2011-08-25  8:20     ` Tejun Heo
2011-08-25  9:14   ` Paul Menage
2011-08-25  9:14   ` Paul Menage
     [not found]     ` <CALdu-PDAgqeRJt5vqTB9wddwz70Yn+Jf-Pb0dDKDBD_q37tHQg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-25  9:20       ` Tejun Heo
2011-08-25  9:20     ` Tejun Heo
2011-08-25  9:32       ` Paul Menage
2011-08-25  9:32       ` Paul Menage
     [not found]       ` <20110825092045.GG3286-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2011-08-25  9:32         ` Paul Menage
2011-08-25  9:20     ` Tejun Heo
2011-08-25  9:32   ` Paul Menage
2011-08-25  9:32   ` Paul Menage
2011-08-23 22:19 ` Tejun Heo
     [not found] ` <1314138000-2049-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-08-23 22:19   ` [PATCH 1/6] cgroup: subsys->attach_task() should be called after migration Tejun Heo
2011-08-23 22:19   ` [PATCH 2/6] cgroup: improve old cgroup handling in cgroup_attach_proc() Tejun Heo
2011-08-23 22:19   ` [PATCH 3/6] cgroup: introduce cgroup_taskset and use it in subsys->can_attach(), cancel_attach() and attach() Tejun Heo
2011-08-23 22:19   ` [PATCH 4/6] cgroup: don't use subsys->can_attach_task() or ->attach_task() Tejun Heo
2011-08-23 22:19   ` [PATCH 5/6] cgroup, cpuset: don't use ss->pre_attach() Tejun Heo
2011-08-23 22:20   ` [PATCH 6/6] cgroup: kill subsys->can_attach_task(), pre_attach() and attach_task() Tejun Heo
2011-08-24  1:14   ` [PATCHSET] cgroup: introduce cgroup_taskset and consolidate subsys methods Frederic Weisbecker
2011-08-23 22:19 ` [PATCH 4/6] cgroup: don't use subsys->can_attach_task() or ->attach_task() Tejun Heo
2011-08-24  1:57   ` Matt Helsley
2011-08-24  7:54     ` Tejun Heo
     [not found]     ` <20110824015739.GE28444-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2011-08-24  7:54       ` Tejun Heo
2011-08-24  7:54     ` Tejun Heo
     [not found]   ` <1314138000-2049-5-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-08-24  1:57     ` Matt Helsley
2011-08-25  9:07     ` Paul Menage
2011-08-24  1:57   ` Matt Helsley
2011-08-25  9:07   ` Paul Menage
2011-08-25  9:12     ` Tejun Heo
2011-08-25  9:12     ` Tejun Heo
     [not found]     ` <CALdu-PCc2RzedXubReF9huamL6W+5qGCfXNNvqS2yUk3QTHRng-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-25  9:12       ` Tejun Heo
2011-08-25  9:07   ` Paul Menage
2011-08-23 22:19 ` Tejun Heo
2011-08-23 22:19 ` Tejun Heo [this message]
2011-08-25  8:53   ` [PATCH 5/6] cgroup, cpuset: don't use ss->pre_attach() Paul Menage
     [not found]   ` <1314138000-2049-6-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-08-25  8:53     ` Paul Menage
2011-08-25  8:53   ` Paul Menage
2011-08-25  9:06     ` Tejun Heo
     [not found]     ` <CALdu-PD5EbFJBRHf-iehPwb6vyJTYUTWZniihARFDZ7xRZ8_nQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-25  9:06       ` Tejun Heo
2011-08-25  9:06     ` Tejun Heo
2011-08-23 22:19 ` Tejun Heo
2011-08-23 22:20 ` [PATCH 6/6] cgroup: kill subsys->can_attach_task(), pre_attach() and attach_task() Tejun Heo
     [not found]   ` <1314138000-2049-7-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-08-25  9:45     ` Paul Menage
2011-08-25  9:45   ` Paul Menage
2011-08-25  9:45   ` Paul Menage
2011-08-23 22:20 ` Tejun Heo
2011-08-24  1:14 ` [PATCHSET] cgroup: introduce cgroup_taskset and consolidate subsys methods Frederic Weisbecker
2011-08-24  7:49   ` Tejun Heo
2011-08-24  7:49   ` Tejun Heo
     [not found]     ` <20110824074959.GA14170-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2011-08-24 13:53       ` Frederic Weisbecker
2011-08-24 13:53     ` Frederic Weisbecker
2011-08-24 13:53     ` Frederic Weisbecker
2011-08-24  7:49   ` Tejun Heo
2011-08-24  1:14 ` Frederic Weisbecker
  -- strict thread matches above, loose matches on Subject: below --
2011-08-25 22:43 [PATCHSET] cgroup: introduce cgroup_taskset and consolidate subsys methods, take#2 Tejun Heo
     [not found] ` <1314312192-26885-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-08-25 22:43   ` [PATCH 5/6] cgroup, cpuset: don't use ss->pre_attach() Tejun Heo
2011-08-25 22:43 ` Tejun Heo
2011-08-25 22:43 ` Tejun Heo
2011-08-26  4:19   ` KAMEZAWA Hiroyuki
2011-08-26  4:19   ` KAMEZAWA Hiroyuki
     [not found]   ` <1314312192-26885-6-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-08-26  4:19     ` KAMEZAWA Hiroyuki

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=1314138000-2049-6-git-send-email-tj@kernel.org \
    --to=tj@kernel.org \
    --cc=containers@lists.linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=lizf@cn.fujitsu.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 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.