Hello, Michal. On Tue, Nov 22, 2011 at 10:05:22AM +0100, Michal Hocko wrote: > I am not sure which BUG_ON you have in mind. > update_if_frozen: > BUG_ON(nfrozen != ntotal); Heh, try to put a kthread into the cgroup and freeze it. :) > From aba1042a96b6e79e0b14e3c397389389c9e2f522 Mon Sep 17 00:00:00 2001 > From: Michal Hocko <mhocko@xxxxxxx> > Date: Wed, 16 Nov 2011 22:38:42 +0100 > Subject: [PATCH] cgroup_freezer: fix freezing groups with stopped tasks > > 2d3cbf8b (cgroup_freezer: update_freezer_state() does incorrect state > transitions) removed is_task_frozen_enough and replaced it with a simple > frozen call. This, however, breaks freezing for a group with stopped tasks > because those cannot be frozen and so the group remains in CGROUP_FREEZING > state (update_if_frozen doesn't count stopped tasks) and never reaches > CGROUP_FROZEN. > > Let's add is_task_frozen_enough back and use it at the original locations > (update_if_frozen and try_to_freeze_cgroup). Semantically we consider > stopped tasks as frozen enough so we should consider both cases when > testing frozen tasks. > > Testcase: > mkdir /dev/freezer > mount -t cgroup -o freezer none /dev/freezer > mkdir /dev/freezer/foo > sleep 1h & > pid=$! > kill -STOP $pid > echo $pid > /dev/freezer/foo/tasks > echo FROZEN > /dev/freezer/foo/freezer.state > while true > do > cat /dev/freezer/foo/freezer.state > [ "`cat /dev/freezer/foo/freezer.state`" = "FROZEN" ] && break > sleep 1 > done > echo OK > > Signed-off-by: Michal Hocko <mhocko@xxxxxxx> > Cc: Tomasz Buchert <tomasz.buchert@xxxxxxxx> > Cc: Paul Menage <paul@xxxxxxxxxxxxxx> > Cc: Li Zefan <lizf@xxxxxxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Tejun Heo <htejun@xxxxxxxxx> Applying to cgroup/for-3.2-fixes. Thank you. -- tejun -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html