The patch titled freezer_cg: use thaw_process() in unfreeze_cgroup() has been removed from the -mm tree. Its filename was freezer_cg-use-thaw_process-in-unfreeze_cgroup.patch This patch was dropped because it was merged into mainline or a subsystem tree The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: freezer_cg: use thaw_process() in unfreeze_cgroup() From: Li Zefan <lizf@xxxxxxxxxxxxxx> Don't duplicate the implementation of thaw_process(). [akpm@xxxxxxxxxxxxxxxxxxxx: make __thaw_process() static] Signed-off-by: Li Zefan <lizf@xxxxxxxxxxxxxx> Cc: Cedric Le Goater <clg@xxxxxxxxxx> Acked-by: Matt Helsley <matthltc@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/freezer.h | 5 ----- kernel/cgroup_freezer.c | 15 ++++----------- kernel/freezer.c | 20 ++++++++++---------- 3 files changed, 14 insertions(+), 26 deletions(-) diff -puN include/linux/freezer.h~freezer_cg-use-thaw_process-in-unfreeze_cgroup include/linux/freezer.h --- a/include/linux/freezer.h~freezer_cg-use-thaw_process-in-unfreeze_cgroup +++ 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/cgroup_freezer.c~freezer_cg-use-thaw_process-in-unfreeze_cgroup kernel/cgroup_freezer.c --- a/kernel/cgroup_freezer.c~freezer_cg-use-thaw_process-in-unfreeze_cgroup +++ a/kernel/cgroup_freezer.c @@ -275,25 +275,18 @@ static int try_to_freeze_cgroup(struct c return num_cant_freeze_now ? -EBUSY : 0; } -static int unfreeze_cgroup(struct cgroup *cgroup, struct freezer *freezer) +static void unfreeze_cgroup(struct cgroup *cgroup, struct freezer *freezer) { struct cgroup_iter it; struct task_struct *task; cgroup_iter_start(cgroup, &it); while ((task = cgroup_iter_next(cgroup, &it))) { - int do_wake; - - task_lock(task); - do_wake = __thaw_process(task); - task_unlock(task); - if (do_wake) - wake_up_process(task); + thaw_process(task); } cgroup_iter_end(cgroup, &it); - freezer->state = CGROUP_THAWED; - return 0; + freezer->state = CGROUP_THAWED; } static int freezer_change_state(struct cgroup *cgroup, @@ -320,7 +313,7 @@ static int freezer_change_state(struct c } /* state == FREEZING and goal_state == THAWED, so unfreeze */ case CGROUP_FROZEN: - retval = unfreeze_cgroup(cgroup, freezer); + unfreeze_cgroup(cgroup, freezer); break; default: break; diff -puN kernel/freezer.c~freezer_cg-use-thaw_process-in-unfreeze_cgroup kernel/freezer.c --- a/kernel/freezer.c~freezer_cg-use-thaw_process-in-unfreeze_cgroup +++ 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); _ Patches currently in -mm which might be from lizf@xxxxxxxxxxxxxx are cgroups-fix-invalid-cgrp-dentry-before-cgroup-has-been-completely-removed.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html