• K
    cgroup: fix frequent -EBUSY at rmdir · ec64f515
    KAMEZAWA Hiroyuki 提交于
    In following situation, with memory subsystem,
    
    	/groupA use_hierarchy==1
    		/01 some tasks
    		/02 some tasks
    		/03 some tasks
    		/04 empty
    
    When tasks under 01/02/03 hit limit on /groupA, hierarchical reclaim
    is triggered and the kernel walks tree under groupA. In this case,
    rmdir /groupA/04 fails with -EBUSY frequently because of temporal
    refcnt from the kernel.
    
    In general. cgroup can be rmdir'd if there are no children groups and
    no tasks. Frequent fails of rmdir() is not useful to users.
    (And the reason for -EBUSY is unknown to users.....in most cases)
    
    This patch tries to modify above behavior, by
    	- retries if css_refcnt is got by someone.
    	- add "return value" to pre_destroy() and allows subsystem to
    	  say "we're really busy!"
    Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Paul Menage <menage@google.com>
    Cc: Li Zefan <lizf@cn.fujitsu.com>
    Cc: Balbir Singh <balbir@in.ibm.com>
    Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    ec64f515
memcontrol.c 56.9 KB