lkml.org 
[lkml]   [2011]   [Aug]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 6/6] cgroup: kill subsys->can_attach_task(), pre_attach() and attach_task()
    On Tue, Aug 23, 2011 at 3:20 PM, Tejun Heo <tj@kernel.org> wrote:
    > These three methods are no longer used.  Kill them.
    >
    > Signed-off-by: Tejun Heo <tj@kernel.org>

    Acked-by: Paul Menage <paul@paulmenage.org>

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

    Thanks,
    Paul

    > Cc: Paul Menage <paul@paulmenage.org>
    > Cc: Li Zefan <lizf@cn.fujitsu.com>
    > ---
    >  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
    >
    >
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2011-08-25 11:47    [W:0.066 / U:0.976 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site