KAMEZAWA Hiroyuki
ec64f51545
cgroup: fix frequent -EBUSY at rmdir
...
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: KAMEZAWA 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: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-04-02 19:04:54 -07:00
..
irq
PM: Introduce functions for suspending and resuming device interrupts
2009-03-30 21:46:54 +02:00
power
pm: rework includes, remove arch ifdefs
2009-04-01 08:59:16 -07:00
time
Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-03-26 16:05:42 -07:00
trace
Merge commit 'origin/master' into next
2009-03-11 17:10:07 +11:00
.gitignore
acct.c
[CVE-2009-0029] System call wrappers part 04
2009-01-14 14:15:19 +01:00
async.c
async: remove the temporary (2.6.29) "async is off by default" code
2009-03-28 13:05:30 -07:00
audit.c
[PATCH] fix broken timestamps in AVC generated by kernel threads
2008-12-09 02:27:41 -05:00
audit.h
fixing audit rule ordering mess, part 1
2009-01-04 15:14:41 -05:00
audit_tree.c
audit: validate comparison operations, store them in sane form
2009-01-04 15:14:42 -05:00
auditfilter.c
audit: validate comparison operations, store them in sane form
2009-01-04 15:14:42 -05:00
auditsc.c
make sure that filterkey of task,always rules is reported
2009-01-04 15:14:42 -05:00
backtracetest.c
bounds.c
capability.c
[CVE-2009-0029] System call wrappers part 04
2009-01-14 14:15:19 +01:00
cgroup.c
cgroup: fix frequent -EBUSY at rmdir
2009-04-02 19:04:54 -07:00
cgroup_debug.c
cgroups: fix probable race with put_css_set[_taskexit] and find_css_set
2008-10-20 08:52:38 -07:00
cgroup_freezer.c
freezer_cg: disable writing freezer.state of root cgroup
2008-11-12 17:17:16 -08:00
compat.c
Allow times and time system calls to return small negative values
2009-01-06 15:59:13 -08:00
configs.c
kernel/configs.c: remove useless comments
2008-10-20 08:52:34 -07:00
cpu.c
cpumask: use set_cpu_active in init/main.c
2009-03-30 22:05:12 +10:30
cpuset.c
cpuset: fix possible deadlock in async_rebuild_sched_domains
2009-01-19 02:44:00 +01:00
cred-internals.h
CRED: Inaugurate COW credentials
2008-11-14 10:39:23 +11:00
cred.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
2009-01-09 13:59:25 -08:00
delayacct.c
schedstat: consolidate per-task cpu runtime stats
2008-12-18 13:54:01 +01:00
dma-coherent.c
dma-coherent: Restore dma_alloc_from_coherent() large alloc fall back policy.
2009-01-21 18:51:53 +09:00
dma.c
exec_domain.c
[CVE-2009-0029] System call wrappers part 04
2009-01-14 14:15:19 +01:00
exit.c
Merge branch 'linus' into x86/apic
2009-02-13 09:44:22 +01:00
extable.c
Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-30 16:10:19 -08:00
fork.c
Simplify copy_thread()
2009-04-02 19:04:51 -07:00
freezer.c
freezer_cg: use thaw_process() in unfreeze_cgroup()
2008-10-30 11:38:45 -07:00
futex.c
futex: remove the pointer math from double_unlock_hb, fix
2009-03-13 10:32:07 +01:00
futex_compat.c
CRED: Use RCU to access another task's creds and to release a task's own creds
2008-11-14 10:39:19 +11:00
hrtimer.c
hrtimer: prevent negative expiry value after clock_was_set()
2009-01-30 22:35:34 +01:00
itimer.c
timers: split process wide cpu clocks/timers
2009-02-05 13:04:33 +01:00
kallsyms.c
Revert "kbuild: strip generated symbols from *.ko"
2009-01-14 21:38:20 +01:00
Kconfig.freezer
container freezer: implement freezer cgroup subsystem
2008-10-20 08:52:34 -07:00
Kconfig.hz
Kconfig.preempt
rcu: provide RCU options on non-preempt architectures too
2008-12-25 09:31:28 +01:00
kexec.c
kexec: Change kexec jump code ordering
2009-03-30 21:46:55 +02:00
kfifo.c
kgdb.c
kmod.c
cpumask: remove dangerous CPU_MASK_ALL_PTR, &CPU_MASK_ALL
2009-03-30 22:05:11 +10:30
kprobes.c
kprobes: check CONFIG_FREEZER instead of CONFIG_PM
2009-01-16 14:32:17 -05:00
ksysfs.c
kernel/ksysfs.c:fix dependence on CONFIG_NET
2009-01-06 10:44:31 -08:00
kthread.c
cpumask: remove dangerous CPU_MASK_ALL_PTR, &CPU_MASK_ALL
2009-03-30 22:05:11 +10:30
latencytop.c
sched, latencytop: incorporate review feedback from Andrew Morton
2009-02-11 10:18:04 +01:00
lockdep.c
lockdep: fix deadlock in lockdep_trace_alloc
2009-03-30 23:19:24 +02:00
lockdep_internals.h
lockdep: get_user_chars() redo
2009-02-14 23:28:22 +01:00
lockdep_proc.c
lockstat: warn about disabled lock debugging
2009-02-14 23:28:28 +01:00
lockdep_states.h
lockdep: move state bit definitions around
2009-02-14 23:27:59 +01:00
Makefile
PM: fix build for CONFIG_PM unset
2009-02-21 14:17:17 -08:00
marker.c
markers/tracpoints: fix non-modular build
2008-11-16 09:52:03 +01:00
module.c
Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2
2009-03-27 17:28:43 +01:00
mutex-debug.c
mutex: implement adaptive spinning
2009-01-14 18:09:02 +01:00
mutex-debug.h
mutex: implement adaptive spinning
2009-01-14 18:09:02 +01:00
mutex.c
mutex: adaptive spinnning, performance tweaks
2009-01-14 19:03:54 +01:00
mutex.h
mutex: implement adaptive spinning
2009-01-14 18:09:02 +01:00
notifier.c
Merge commit 'v2.6.28-rc6' into core/debug
2008-11-26 08:22:50 +01:00
ns_cgroup.c
cgroups: relax ns_can_attach checks to allow attaching to grandchild cgroups
2009-04-02 19:04:53 -07:00
nsproxy.c
User namespaces: set of cleanups (v2)
2008-11-24 18:57:41 -05:00
panic.c
stackprotector: update make rules
2009-02-10 00:41:54 +01:00
params.c
Fix compile warning in kernel/params.c
2008-10-23 12:09:00 -07:00
pid.c
pid: generalize task_active_pid_ns
2009-01-08 08:31:12 -08:00
pid_namespace.c
pm_qos_params.c
posix-cpu-timers.c
posix timers: fix RLIMIT_CPU && fork()
2009-03-23 20:43:35 +01:00
posix-timers.c
[CVE-2009-0029] System call wrappers part 05
2009-01-14 14:15:20 +01:00
printk.c
PM: Fix suspend_console and resume_console to use only one semaphore
2009-02-21 14:17:18 -08:00
profile.c
profiling: fix broken profiling regression
2009-02-10 00:50:37 +01:00
ptrace.c
[CVE-2009-0029] System call wrappers part 27
2009-01-14 14:15:29 +01:00
rcuclassic.c
rcu: Teach RCU that idle task is not quiscent state at boot
2009-02-26 04:08:14 +01:00
rcupdate.c
rcu: Teach RCU that idle task is not quiscent state at boot
2009-02-26 04:08:14 +01:00
rcupreempt.c
rcu: Teach RCU that idle task is not quiscent state at boot
2009-02-26 04:08:14 +01:00
rcupreempt_trace.c
"Tree RCU": scalable classic RCU implementation
2008-12-18 21:56:04 +01:00
rcutorture.c
cpumask: convert rcutorture.c
2009-03-30 22:05:16 +10:30
rcutree.c
rcu: Teach RCU that idle task is not quiscent state at boot
2009-02-26 04:08:14 +01:00
rcutree_trace.c
"Tree RCU": scalable classic RCU implementation
2008-12-18 21:56:04 +01:00
relay.c
timers: add mod_timer_pending()
2009-02-18 19:26:33 +01:00
res_counter.c
memcg: memory cgroup resource counters for hierarchy
2009-01-08 08:31:05 -08:00
resource.c
resources: fix parameter name and kernel-doc
2009-01-15 16:39:38 -08:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
epoll keyed wakeups: add __wake_up_locked_key() and __wake_up_sync_key()
2009-04-01 08:59:20 -07:00
sched_clock.c
sched_clock: cleanups
2009-02-26 21:56:07 +01:00
sched_cpupri.c
sched: fix section mismatch
2009-01-06 11:07:15 +01:00
sched_cpupri.h
cpumask: remove cpumask_t from core
2009-03-30 22:05:17 +10:30
sched_debug.c
sched: remove unused fields from struct rq
2009-03-24 23:16:51 +01:00
sched_fair.c
Merge branch 'sched/urgent'; commit 'v2.6.29-rc5' into sched/core
2009-02-15 21:15:16 +01:00
sched_features.h
Merge branch 'locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-03-30 17:17:35 -07:00
sched_idletask.c
sched: add CONFIG_SMP consistency
2008-10-22 10:01:52 +02:00
sched_rt.c
Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2
2009-03-27 17:28:43 +01:00
sched_stats.h
sched: remove unused fields from struct rq
2009-03-24 23:16:51 +01:00
seccomp.c
x86-64: seccomp: fix 32/64 syscall hole
2009-03-02 15:41:30 -08:00
semaphore.c
signal.c
fix ptrace slowness
2009-03-23 09:22:31 -07:00
smp.c
generic-ipi: use per cpu data for single cpu ipi calls
2009-01-30 18:31:08 +01:00
softirq.c
Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2
2009-03-27 17:28:43 +01:00
softlockup.c
softlock: fix false panic which can occur if softlockup_thresh is reduced
2009-01-14 11:48:07 +01:00
spinlock.c
srcu.c
stacktrace.c
stacktrace: provide save_stack_trace_tsk() weak alias
2008-12-25 11:44:43 +01:00
stop_machine.c
cpumask: remove cpumask_t from core
2009-03-30 22:05:17 +10:30
sys.c
sched: don't allow setuid to succeed if the user does not have rt bandwidth
2009-02-27 11:11:53 +01:00
sys_ni.c
[CVE-2009-0029] Make sys_syslog a conditional system call
2009-01-14 14:15:16 +01:00
sysctl.c
mm: fix proc_dointvec_userhz_jiffies "breakage"
2009-04-01 08:59:13 -07:00
sysctl_check.c
net: add ARP notify option for devices
2009-02-01 01:04:33 -08:00
taskstats.c
cpumask: convert rest of files in kernel/
2009-01-01 10:12:28 +10:30
test_kprobes.c
kprobes: add tests for register_kprobes
2009-01-06 15:59:20 -08:00
time.c
[CVE-2009-0029] System call wrappers part 01
2009-01-14 14:15:18 +01:00
timeconst.pl
timer.c
Merge branch 'locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-03-30 17:17:35 -07:00
tracepoint.c
markers/tracpoints: fix non-modular build
2008-11-16 09:52:03 +01:00
tsacct.c
Fix fixpoint divide exception in acct_update_integrals
2009-03-09 08:13:35 -07:00
uid16.c
[CVE-2009-0029] System call wrappers part 19
2009-01-14 14:15:26 +01:00
up.c
smp_call_function_single(): be slightly less stupid, fix #2
2009-01-12 16:04:37 +01:00
user.c
Merge branch 'master' into next
2009-03-24 10:52:46 +11:00
user_namespace.c
Fix recursive lock in free_uid()/free_user_ns()
2009-02-27 16:26:21 -08:00
utsname.c
utsname_sysctl.c
wait.c
wait: prevent exclusive waiter starvation
2009-02-05 12:56:48 -08:00
workqueue.c
cpumask: use new cpumask_ functions in core code.
2009-03-30 22:05:16 +10:30