diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2008-10-29 17:00:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-30 14:38:45 -0400 |
commit | 51308ee59dee1136ed599d875ea8968d7be55c91 (patch) | |
tree | 8976509c5fbf8171774e7eb7007cf0d4d00f0f83 /kernel | |
parent | 00c2e63c31d0f431952ff2a671c5c6997dd4f8b2 (diff) |
freezer_cg: simplify freezer_change_state()
Just call unfreeze_cgroup() if goal_state == THAWED, and call
try_to_freeze_cgroup() if goal_state == FROZEN.
No behavior has been changed.
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Cedric Le Goater <clg@fr.ibm.com>
Acked-by: Matt Helsley <matthltc@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/cgroup_freezer.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/kernel/cgroup_freezer.c b/kernel/cgroup_freezer.c index 5e6d26b66e88..7fa476f01d05 100644 --- a/kernel/cgroup_freezer.c +++ b/kernel/cgroup_freezer.c | |||
@@ -296,27 +296,22 @@ static int freezer_change_state(struct cgroup *cgroup, | |||
296 | int retval = 0; | 296 | int retval = 0; |
297 | 297 | ||
298 | freezer = cgroup_freezer(cgroup); | 298 | freezer = cgroup_freezer(cgroup); |
299 | |||
299 | spin_lock_irq(&freezer->lock); | 300 | spin_lock_irq(&freezer->lock); |
301 | |||
300 | update_freezer_state(cgroup, freezer); | 302 | update_freezer_state(cgroup, freezer); |
301 | if (goal_state == freezer->state) | 303 | if (goal_state == freezer->state) |
302 | goto out; | 304 | goto out; |
303 | switch (freezer->state) { | 305 | |
306 | switch (goal_state) { | ||
304 | case CGROUP_THAWED: | 307 | case CGROUP_THAWED: |
305 | retval = try_to_freeze_cgroup(cgroup, freezer); | 308 | unfreeze_cgroup(cgroup, freezer); |
306 | break; | 309 | break; |
307 | case CGROUP_FREEZING: | ||
308 | if (goal_state == CGROUP_FROZEN) { | ||
309 | /* Userspace is retrying after | ||
310 | * "/bin/echo FROZEN > freezer.state" returned -EBUSY */ | ||
311 | retval = try_to_freeze_cgroup(cgroup, freezer); | ||
312 | break; | ||
313 | } | ||
314 | /* state == FREEZING and goal_state == THAWED, so unfreeze */ | ||
315 | case CGROUP_FROZEN: | 310 | case CGROUP_FROZEN: |
316 | unfreeze_cgroup(cgroup, freezer); | 311 | retval = try_to_freeze_cgroup(cgroup, freezer); |
317 | break; | 312 | break; |
318 | default: | 313 | default: |
319 | break; | 314 | BUG(); |
320 | } | 315 | } |
321 | out: | 316 | out: |
322 | spin_unlock_irq(&freezer->lock); | 317 | spin_unlock_irq(&freezer->lock); |