Thread (1 message) 1 message, 1 author, 2011-08-25

Re: [PATCH 6/6] cgroup: kill subsys->can_attach_task(), pre_attach() and attach_task()

From: Paul Menage <hidden>
Date: 2011-08-25 09:45:24

On Tue, Aug 23, 2011 at 3:20 PM, Tejun Heo [off-list ref] wrote:
These three methods are no longer used.  Kill them.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Paul Menage <redacted>

Overall, I think this patch set is a great improvement in code
simplicity and clarity.

Thanks,
Paul
quoted hunk
Cc: Paul Menage <redacted>
Cc: Li Zefan <redacted>
---
 include/linux/cgroup.h |    3 --
 kernel/cgroup.c        |   53 ++++-------------------------------------------
 2 files changed, 5 insertions(+), 51 deletions(-)
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index 2470c8e..5659d37 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -490,11 +490,8 @@ struct cgroup_subsys {
       void (*destroy)(struct cgroup_subsys *ss, struct cgroup *cgrp);
       int (*can_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp,
                         struct cgroup_taskset *tset);
-       int (*can_attach_task)(struct cgroup *cgrp, struct task_struct *tsk);
       void (*cancel_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp,
                             struct cgroup_taskset *tset);
-       void (*pre_attach)(struct cgroup *cgrp);
-       void (*attach_task)(struct cgroup *cgrp, struct task_struct *tsk);
       void (*attach)(struct cgroup_subsys *ss, struct cgroup *cgrp,
                      struct cgroup_taskset *tset);
       void (*fork)(struct cgroup_subsys *ss, struct task_struct *task);
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 474674b..374a4cb 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1926,13 +1926,6 @@ int cgroup_attach_task(struct cgroup *cgrp, struct task_struct *tsk)
                               goto out;
                       }
               }
-               if (ss->can_attach_task) {
-                       retval = ss->can_attach_task(cgrp, tsk);
-                       if (retval) {
-                               failed_ss = ss;
-                               goto out;
-                       }
-               }
       }

       retval = cgroup_task_migrate(cgrp, oldcgrp, tsk, false);
@@ -1940,10 +1933,6 @@ int cgroup_attach_task(struct cgroup *cgrp, struct task_struct *tsk)
               goto out;

       for_each_subsys(root, ss) {
-               if (ss->pre_attach)
-                       ss->pre_attach(cgrp);
-               if (ss->attach_task)
-                       ss->attach_task(cgrp, tsk);
               if (ss->attach)
                       ss->attach(ss, cgrp, &tset);
       }
@@ -2075,7 +2064,6 @@ int cgroup_attach_proc(struct cgroup *cgrp, struct task_struct *leader)
 {
       int retval, i, group_size, nr_todo;
       struct cgroup_subsys *ss, *failed_ss = NULL;
-       bool cancel_failed_ss = false;
       /* guaranteed to be initialized later, but the compiler needs this */
       struct css_set *oldcg;
       struct cgroupfs_root *root = cgrp->root;
@@ -2166,21 +2154,6 @@ int cgroup_attach_proc(struct cgroup *cgrp, struct task_struct *leader)
                               goto out_cancel_attach;
                       }
               }
-               /* a callback to be run on every thread in the threadgroup. */
-               if (ss->can_attach_task) {
-                       /* run on each task in the threadgroup. */
-                       for (i = 0; i < group_size; i++) {
-                               tc = flex_array_get(group, i);
-                               if (tc->cgrp == cgrp)
-                                       continue;
-                               retval = ss->can_attach_task(cgrp, tc->task);
-                               if (retval) {
-                                       failed_ss = ss;
-                                       cancel_failed_ss = true;
-                                       goto out_cancel_attach;
-                               }
-                       }
-               }
       }

       /*
@@ -2217,15 +2190,10 @@ int cgroup_attach_proc(struct cgroup *cgrp, struct task_struct *leader)
       }

       /*
-        * step 3: now that we're guaranteed success wrt the css_sets, proceed
-        * to move all tasks to the new cgroup, calling ss->attach_task for each
-        * one along the way. there are no failure cases after here, so this is
-        * the commit point.
+        * step 3: now that we're guaranteed success wrt the css_sets,
+        * proceed to move all tasks to the new cgroup.  There are no
+        * failure cases after here, so this is the commit point.
        */
-       for_each_subsys(root, ss) {
-               if (ss->pre_attach)
-                       ss->pre_attach(cgrp);
-       }
       for (i = 0; i < group_size; i++) {
               tc = flex_array_get(group, i);
               /* leave current thread as it is if it's already there */
@@ -2235,19 +2203,11 @@ int cgroup_attach_proc(struct cgroup *cgrp, struct task_struct *leader)
               /* if the thread is PF_EXITING, it can just get skipped. */
               retval = cgroup_task_migrate(cgrp, tc->cgrp, tc->task, true);
               BUG_ON(retval != 0 && retval != -ESRCH);
-
-               /* attach each task to each subsystem */
-               for_each_subsys(root, ss) {
-                       if (ss->attach_task)
-                               ss->attach_task(cgrp, tc->task);
-               }
       }
       /* nothing is sensitive to fork() after this point. */

       /*
-        * step 4: do expensive, non-thread-specific subsystem callbacks.
-        * TODO: if ever a subsystem needs to know the oldcgrp for each task
-        * being moved, this call will need to be reworked to communicate that.
+        * step 4: do subsystem attach callbacks.
        */
       for_each_subsys(root, ss) {
               if (ss->attach)
@@ -2271,11 +2231,8 @@ out_cancel_attach:
       /* same deal as in cgroup_attach_task */
       if (retval) {
               for_each_subsys(root, ss) {
-                       if (ss == failed_ss) {
-                               if (cancel_failed_ss && ss->cancel_attach)
-                                       ss->cancel_attach(ss, cgrp, &tset);
+                       if (ss == failed_ss)
                               break;
-                       }
                       if (ss->cancel_attach)
                               ss->cancel_attach(ss, cgrp, &tset);
               }
--
1.7.6
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help