KAMEZAWA Hiroyuki 887032670d cgroup avoid permanent sleep at rmdir
After commit ec64f51545fffbc4cb968f0cea56341a4b07e85a ("cgroup: fix
frequent -EBUSY at rmdir"), cgroup's rmdir (especially against memcg)
doesn't return -EBUSY by temporary ref counts.  That commit expects all
refs after pre_destroy() is temporary but...it wasn't.  Then, rmdir can
wait permanently.  This patch tries to fix that and change followings.

 - set CGRP_WAIT_ON_RMDIR flag before pre_destroy().
 - clear CGRP_WAIT_ON_RMDIR flag when the subsys finds racy case.
   if there are sleeping ones, wakes them up.
 - rmdir() sleeps only when CGRP_WAIT_ON_RMDIR flag is set.

Tested-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Reported-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Reviewed-by: Paul Menage <menage@google.com>
Acked-by: Balbir Sigh <balbir@linux.vnet.ibm.com>
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-07-29 19:10:35 -07:00
..
2009-07-12 12:22:34 -07:00
2009-06-24 00:02:38 -04:00
2009-06-24 00:02:38 -04:00
2009-07-29 19:10:35 -07:00
2009-07-08 09:31:56 -07:00
2009-06-16 19:47:48 -07:00
2009-07-10 17:32:55 +02:00
2009-05-15 07:56:24 -05:00
2009-07-08 09:31:56 -07:00
2009-07-27 12:15:46 -07:00
2009-01-14 18:09:02 +01:00
2009-06-18 13:03:56 -07:00
2009-06-18 13:03:55 -07:00
2009-03-30 22:05:16 +10:30
2009-06-16 19:47:48 -07:00
2009-06-15 21:30:23 -07:00
2009-06-18 13:03:55 -07:00
2009-04-14 17:17:16 +02:00