aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2011-11-21 15:32:23 -0500
committerTejun Heo <tj@kernel.org>2011-11-21 15:32:23 -0500
commit6cd8dedcdd8e8de01391a7cf25f0b2afeb24f8f4 (patch)
tree2b4b5d40fb4c66ac73839f6a37fb2de4786efc38
parenta585042f7b933539a0b6bc63650c2d49ffb2e55d (diff)
freezer: don't distinguish nosig tasks on thaw
There's no point in thawing nosig tasks before others. There's no ordering requirement between the two groups on thaw, which the staged thawing can't guarantee anyway. Simplify thaw_processes() by removing the distinction and collapsing thaw_tasks() into thaw_processes(). This will help further updates to freezer. Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r--kernel/power/process.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/kernel/power/process.c b/kernel/power/process.c
index 23822dc14b6c..9db048fb0d70 100644
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -170,34 +170,28 @@ int freeze_kernel_threads(void)
170 return error; 170 return error;
171} 171}
172 172
173static void thaw_tasks(bool nosig_only) 173void thaw_processes(void)
174{ 174{
175 struct task_struct *g, *p; 175 struct task_struct *g, *p;
176 176
177 oom_killer_enable();
178
179 printk("Restarting tasks ... ");
180
181 thaw_workqueues();
182
177 read_lock(&tasklist_lock); 183 read_lock(&tasklist_lock);
178 do_each_thread(g, p) { 184 do_each_thread(g, p) {
179 if (!freezable(p)) 185 if (!freezable(p))
180 continue; 186 continue;
181 187
182 if (nosig_only && should_send_signal(p))
183 continue;
184
185 if (cgroup_freezing_or_frozen(p)) 188 if (cgroup_freezing_or_frozen(p))
186 continue; 189 continue;
187 190
188 __thaw_task(p); 191 __thaw_task(p);
189 } while_each_thread(g, p); 192 } while_each_thread(g, p);
190 read_unlock(&tasklist_lock); 193 read_unlock(&tasklist_lock);
191}
192
193void thaw_processes(void)
194{
195 oom_killer_enable();
196 194
197 printk("Restarting tasks ... ");
198 thaw_workqueues();
199 thaw_tasks(true);
200 thaw_tasks(false);
201 schedule(); 195 schedule();
202 printk("done.\n"); 196 printk("done.\n");
203} 197}