lkml.org 
[lkml]   [2008]   [Oct]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 3/4] freezer_cg: use thaw_process() in unfreeze_cgroup()
    On Tue, 21 Oct 2008 09:16:08 +0200
    Cedric Le Goater <clg@fr.ibm.com> wrote:

    > Li Zefan wrote:
    > > Don't duplicate the implementation of thaw_process().
    >
    > looks OK but you should remove __thaw_process() which is unused
    > now.

    It's called by thaw_process().

    But that's the only callsite, I believe, so...

    --- a/include/linux/freezer.h~freezer_cg-use-thaw_process-in-unfreeze_cgroup-fix
    +++ a/include/linux/freezer.h
    @@ -44,11 +44,6 @@ static inline bool should_send_signal(st
    return !(p->flags & PF_FREEZER_NOSIG);
    }

    -/*
    - * Wake up a frozen process
    - */
    -extern int __thaw_process(struct task_struct *p);
    -
    /* Takes and releases task alloc lock using task_lock() */
    extern int thaw_process(struct task_struct *p);

    diff -puN kernel/freezer.c~freezer_cg-use-thaw_process-in-unfreeze_cgroup-fix kernel/freezer.c
    --- a/kernel/freezer.c~freezer_cg-use-thaw_process-in-unfreeze_cgroup-fix
    +++ a/kernel/freezer.c
    @@ -121,16 +121,7 @@ void cancel_freezing(struct task_struct
    }
    }

    -/*
    - * Wake up a frozen process
    - *
    - * task_lock() is needed to prevent the race with refrigerator() which may
    - * occur if the freezing of tasks fails. Namely, without the lock, if the
    - * freezing of tasks failed, thaw_tasks() might have run before a task in
    - * refrigerator() could call frozen_process(), in which case the task would be
    - * frozen and no one would thaw it.
    - */
    -int __thaw_process(struct task_struct *p)
    +static int __thaw_process(struct task_struct *p)
    {
    if (frozen(p)) {
    p->flags &= ~PF_FROZEN;
    @@ -140,6 +131,15 @@ int __thaw_process(struct task_struct *p
    return 0;
    }

    +/*
    + * Wake up a frozen process
    + *
    + * task_lock() is needed to prevent the race with refrigerator() which may
    + * occur if the freezing of tasks fails. Namely, without the lock, if the
    + * freezing of tasks failed, thaw_tasks() might have run before a task in
    + * refrigerator() could call frozen_process(), in which case the task would be
    + * frozen and no one would thaw it.
    + */
    int thaw_process(struct task_struct *p)
    {
    task_lock(p);
    _


    \
     
     \ /
      Last update: 2008-10-21 23:01    [W:0.050 / U:126.724 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site