android_kernel_xiaomi_sm8350/kernel
Cliff Wickman 956db3ca06 hotplug cpu: move tasks in empty cpusets to parent
This patch corrects a situation that occurs when one disables all the cpus in
a cpuset.

Currently, the disabled (cpu-less) cpuset inherits the cpus of its parent,
which is incorrect because it may then overlap its cpu-exclusive sibling.

Tasks of an empty cpuset should be moved to the cpuset which is the parent of
their current cpuset.  Or if the parent cpuset has no cpus, to its parent,
etc.

And the empty cpuset should be released (if it is flagged notify_on_release).

Depends on the cgroup_scan_tasks() function (proposed by David Rientjes) to
iterate through all tasks in the cpu-less cpuset.  We are deliberately
avoiding a walk of the tasklist.

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Cliff Wickman <cpw@sgi.com>
Cc: Paul Menage <menage@google.com>
Cc: Paul Jackson <pj@sgi.com>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-07 08:42:22 -08:00
..
irq genirq: stackdump after the "Trying to free already-free IRQ" message 2008-01-30 13:33:24 +01:00
power kernel/power/disk.c: make code static 2008-02-05 09:44:22 -08:00
time time: fix sysfs_show_{available,current}_clocksources() buffer overflow problem 2008-02-06 10:41:03 -08:00
.gitignore
acct.c
audit_tree.c
audit.c [AUDIT] ratelimit printk messages audit 2008-02-01 14:25:04 -05:00
audit.h
auditfilter.c [AUDIT] make audit=0 really stop audit messages 2008-02-01 14:24:33 -05:00
auditsc.c [AUDIT] create context if auditing was ever enabled 2008-02-01 14:24:45 -05:00
backtracetest.c x86: add a simple backtrace test module 2008-01-30 13:33:08 +01:00
capability.c Add 64-bit capability support to the kernel 2008-02-05 09:44:20 -08:00
cgroup_debug.c
cgroup.c hotplug cpu: move tasks in empty cpusets to parent 2008-02-07 08:42:22 -08:00
compat.c
configs.c
cpu.c
cpuset.c hotplug cpu: move tasks in empty cpusets to parent 2008-02-07 08:42:22 -08:00
delayacct.c
dma.c
exec_domain.c
exit.c do_wait: remove one "else if" branch 2008-02-06 10:41:04 -08:00
extable.c module: Don't report discarded init pages as kernel text. 2008-01-29 17:13:18 +11:00
fork.c Memory controller: accounting setup 2008-02-07 08:42:18 -08:00
futex_compat.c futex: Add bitset conditional wait/wakeup functionality 2008-02-01 17:45:14 +01:00
futex.c futex: Add bitset conditional wait/wakeup functionality 2008-02-01 17:45:14 +01:00
hrtimer.c timerfd: new timerfd API 2008-02-05 09:44:07 -08:00
itimer.c
kallsyms.c remove support for un-needed _extratext section 2008-02-06 10:41:01 -08:00
Kconfig.hz sched: high-res preemption tick 2008-01-25 21:08:29 +01:00
Kconfig.preempt sched: remove the !PREEMPT_BKL code 2008-01-25 21:08:33 +01:00
kexec.c
kfifo.c
kmod.c
kprobes.c kprobes: kretprobe user entry-handler 2008-02-06 10:41:11 -08:00
ksysfs.c
kthread.c sched: fix, always create kernel threads with normal priority 2008-01-25 21:08:33 +01:00
latencytop.c sched: latencytop support 2008-01-25 21:08:34 +01:00
lockdep_internals.h
lockdep_proc.c
lockdep.c
Makefile Memory controller: resource counters 2008-02-07 08:42:18 -08:00
marker.c
module.c x86/non-x86: percpu, node ids, apic ids x86.git fixup 2008-01-30 13:33:32 +01:00
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
notifier.c kernel/notifier.c should #include <linux/reboot.h> 2008-02-06 10:41:02 -08:00
ns_cgroup.c
nsproxy.c
panic.c debug: add the end-of-trace marker and the module list to 2008-01-30 13:32:50 +01:00
params.c kernel/params.c: remove sparse-warning (different signedness) 2008-02-06 10:41:08 -08:00
pid.c gfs2: make gfs2_glock.gl_owner_pid be a struct pid * 2008-02-07 08:42:06 -08:00
pm_qos_params.c pm qos infrastructure and interface 2008-02-05 09:44:22 -08:00
posix-cpu-timers.c sched: rt-watchdog: fix .rlim_max = RLIM_INFINITY 2008-01-25 21:08:32 +01:00
posix-timers.c timerfd: new timerfd API 2008-02-05 09:44:07 -08:00
printk.c printk.c: use unsigned ints instead of longs for logbuf index 2008-02-06 10:41:04 -08:00
profile.c debug: clean up kernel/profile.c 2008-01-25 21:08:33 +01:00
ptrace.c kernel/ptrace.c should #include <linux/syscalls.h> 2008-02-06 10:41:02 -08:00
rcuclassic.c Preempt-RCU: implementation 2008-01-25 21:08:24 +01:00
rcupdate.c Preempt-RCU: fix rcu_barrier for preemptive environment. 2008-01-25 21:08:24 +01:00
rcupreempt_trace.c Preempt-RCU: implementation 2008-01-25 21:08:24 +01:00
rcupreempt.c Preempt-RCU: CPU Hotplug handling 2008-01-25 21:08:25 +01:00
rcutorture.c
relay.c relay: nopage 2008-02-06 10:41:07 -08:00
res_counter.c Memory controller improve user interface 2008-02-07 08:42:18 -08:00
resource.c
rtmutex_common.h
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rwsem.c
sched_debug.c sched: keep total / count stats in addition to the max for 2008-01-25 21:08:35 +01:00
sched_fair.c sched: let +nice tasks have smaller impact 2008-01-31 22:45:22 +01:00
sched_idletask.c sched: high-res preemption tick 2008-01-25 21:08:29 +01:00
sched_rt.c sched: fix goto retry in pick_next_task_rt() 2008-01-25 21:08:34 +01:00
sched_stats.h
sched.c Merge branch 'task_killable' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc 2008-02-01 11:45:47 +11:00
seccomp.c
signal.c Add arch_ptrace_stop 2008-02-06 10:41:07 -08:00
softirq.c time: track accurate idle time with tick_sched.idle_sleeptime 2008-01-30 13:30:04 +01:00
softlockup.c debug: softlockup looping fix 2008-02-02 14:27:45 +11:00
spinlock.c spinlock: lockbreak cleanup 2008-01-30 13:31:20 +01:00
srcu.c make srcu_readers_active() static 2008-02-06 10:41:02 -08:00
stacktrace.c
stop_machine.c stopmachine: semaphore to mutex 2008-02-06 10:41:08 -08:00
sys_ni.c timerfd: new timerfd API 2008-02-05 09:44:07 -08:00
sys.c kernel/sys.c: get rid of expensive divides in groups_sort() 2008-02-06 10:41:09 -08:00
sysctl_check.c capabilities: introduce per-process capability bounding set 2008-02-05 09:44:20 -08:00
sysctl.c oom: add sysctl to enable task memory dump 2008-02-07 08:42:19 -08:00
taskstats.c
test_kprobes.c kprobes: kretprobe user entry-handler 2008-02-06 10:41:11 -08:00
time.c speed up jiffies conversion functions if HZ==USER_HZ 2008-02-06 10:41:10 -08:00
timer.c taskstats scaled time cleanup 2008-02-06 10:41:00 -08:00
tsacct.c
uid16.c
user_namespace.c
user.c uids: merge multiple error paths in alloc_uid() into one 2008-01-25 21:08:26 +01:00
utsname_sysctl.c
utsname.c
wait.c
workqueue.c