Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Li Zefan and committed by
Linus Torvalds
51308ee5 00c2e63c

+8 -13
+8 -13
kernel/cgroup_freezer.c
··· 296 296 int retval = 0; 297 297 298 298 freezer = cgroup_freezer(cgroup); 299 + 299 300 spin_lock_irq(&freezer->lock); 301 + 300 302 update_freezer_state(cgroup, freezer); 301 303 if (goal_state == freezer->state) 302 304 goto out; 303 - switch (freezer->state) { 305 + 306 + switch (goal_state) { 304 307 case CGROUP_THAWED: 305 - retval = try_to_freeze_cgroup(cgroup, freezer); 306 - 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: 316 308 unfreeze_cgroup(cgroup, freezer); 317 309 break; 318 - default: 310 + case CGROUP_FROZEN: 311 + retval = try_to_freeze_cgroup(cgroup, freezer); 319 312 break; 313 + default: 314 + BUG(); 320 315 } 321 316 out: 322 317 spin_unlock_irq(&freezer->lock);