lkml.org 
[lkml]   [2008]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] cgroup: list_for_each cleanup

    --------------------------
    while() {
    list_entry();
    ...
    }
    --------------------------

    is equivalent to following code.

    --------------------------
    list_for_each_entry(){
    ...
    }
    --------------------------

    later can review easily more.

    this patch is just clean up.
    it doesn't have any behavor change.


    Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>

    ---
    kernel/cgroup.c | 55 ++++++++++++++++++++++++++++---------------------------
    1 file changed, 28 insertions(+), 27 deletions(-)

    Index: b/kernel/cgroup.c
    ===================================================================
    --- a/kernel/cgroup.c
    +++ b/kernel/cgroup.c
    @@ -241,17 +241,20 @@ static int use_task_css_set_links;
    */
    static void unlink_css_set(struct css_set *cg)
    {
    + struct cg_cgroup_link *link;
    + struct cg_cgroup_link *saved_link;
    +
    write_lock(&css_set_lock);
    hlist_del(&cg->hlist);
    css_set_count--;
    - while (!list_empty(&cg->cg_links)) {
    - struct cg_cgroup_link *link;
    - link = list_entry(cg->cg_links.next,
    - struct cg_cgroup_link, cg_link_list);
    +
    + list_for_each_entry_safe(link, saved_link, &cg->cg_links,
    + cg_link_list) {
    list_del(&link->cg_link_list);
    list_del(&link->cgrp_link_list);
    kfree(link);
    }
    +
    write_unlock(&css_set_lock);
    }

    @@ -363,15 +366,14 @@ static struct css_set *find_existing_css
    static int allocate_cg_links(int count, struct list_head *tmp)
    {
    struct cg_cgroup_link *link;
    + struct cg_cgroup_link *saved_link;
    int i;
    INIT_LIST_HEAD(tmp);
    for (i = 0; i < count; i++) {
    link = kmalloc(sizeof(*link), GFP_KERNEL);
    if (!link) {
    - while (!list_empty(tmp)) {
    - link = list_entry(tmp->next,
    - struct cg_cgroup_link,
    - cgrp_link_list);
    + list_for_each_entry_safe(link, saved_link, tmp,
    + cgrp_link_list) {
    list_del(&link->cgrp_link_list);
    kfree(link);
    }
    @@ -384,11 +386,10 @@ static int allocate_cg_links(int count,

    static void free_cg_links(struct list_head *tmp)
    {
    - while (!list_empty(tmp)) {
    - struct cg_cgroup_link *link;
    - link = list_entry(tmp->next,
    - struct cg_cgroup_link,
    - cgrp_link_list);
    + struct cg_cgroup_link *link;
    + struct cg_cgroup_link *saved_link;
    +
    + list_for_each_entry_safe(link, saved_link, tmp, cgrp_link_list) {
    list_del(&link->cgrp_link_list);
    kfree(link);
    }
    @@ -1093,6 +1094,8 @@ static void cgroup_kill_sb(struct super_
    struct cgroupfs_root *root = sb->s_fs_info;
    struct cgroup *cgrp = &root->top_cgroup;
    int ret;
    + struct cg_cgroup_link *link;
    + struct cg_cgroup_link *saved_link;

    BUG_ON(!root);

    @@ -1112,10 +1115,9 @@ static void cgroup_kill_sb(struct super_
    * root cgroup
    */
    write_lock(&css_set_lock);
    - while (!list_empty(&cgrp->css_sets)) {
    - struct cg_cgroup_link *link;
    - link = list_entry(cgrp->css_sets.next,
    - struct cg_cgroup_link, cgrp_link_list);
    +
    + list_for_each_entry_safe(link, saved_link, &cgrp->css_sets,
    + cgrp_link_list) {
    list_del(&link->cg_link_list);
    list_del(&link->cgrp_link_list);
    kfree(link);
    @@ -1756,15 +1758,11 @@ int cgroup_add_files(struct cgroup *cgrp
    int cgroup_task_count(const struct cgroup *cgrp)
    {
    int count = 0;
    - struct list_head *l;
    + struct cg_cgroup_link *link;

    read_lock(&css_set_lock);
    - l = cgrp->css_sets.next;
    - while (l != &cgrp->css_sets) {
    - struct cg_cgroup_link *link =
    - list_entry(l, struct cg_cgroup_link, cgrp_link_list);
    + list_for_each_entry(link, &cgrp->css_sets, cgrp_link_list) {
    count += atomic_read(&link->cg->ref.refcount);
    - l = l->next;
    }
    read_unlock(&css_set_lock);
    return count;
    @@ -3072,16 +3070,19 @@ void __css_put(struct cgroup_subsys_stat
    */
    static void cgroup_release_agent(struct work_struct *work)
    {
    + struct cgroup *cgrp;
    + struct cgroup *saved_cgrp;
    +
    BUG_ON(work != &release_agent_work);
    mutex_lock(&cgroup_mutex);
    spin_lock(&release_list_lock);
    - while (!list_empty(&release_list)) {
    +
    + list_for_each_entry_safe(cgrp, saved_cgrp, &release_list,
    + release_list) {
    char *argv[3], *envp[3];
    int i;
    char *pathbuf;
    - struct cgroup *cgrp = list_entry(release_list.next,
    - struct cgroup,
    - release_list);
    +
    list_del_init(&cgrp->release_list);
    spin_unlock(&release_list_lock);
    pathbuf = kmalloc(PAGE_SIZE, GFP_KERNEL);



    \
     
     \ /
      Last update: 2008-06-04 10:39    [W:2.433 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site