android_kernel_xiaomi_sm8350/kernel
Paul Jackson e4e364e865 [PATCH] cpuset: memory migration interaction fix
Fix memory migration so that it works regardless of what cpuset the invoking
task is in.

If a task invoked a memory migration, by doing one of:

       1) writing a different nodemask to a cpuset 'mems' file, or

       2) writing a tasks pid to a different cpuset's 'tasks' file,
          where the cpuset had its 'memory_migrate' option turned on, then the
          allocation of the new pages for the migrated task(s) was constrained
          by the invoking tasks cpuset.

If this task wasn't in a cpuset that allowed the requested memory nodes, the
memory migration would happen to some other nodes that were in that invoking
tasks cpuset.  This was usually surprising and puzzling behaviour: Why didn't
the pages move?  Why did the pages move -there-?

To fix this, temporarilly change the invoking tasks 'mems_allowed' task_struct
field to the nodes the migrating tasks is moving to, so that new pages can be
allocated there.

Signed-off-by: Paul Jackson <pj@sgi.com>
Acked-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-31 12:18:55 -08:00
..
irq [PATCH] warn if free_irq() is called from IRQ context 2006-03-26 08:56:53 -08:00
power [PATCH] Fix suspend with traced tasks 2006-03-31 12:18:50 -08:00
.gitignore
acct.c [PATCH] Fix pacct bug in multithreading case. 2006-03-31 12:18:54 -08:00
audit.c [PATCH] Don't pass boot parameters to argv_init[] 2006-03-31 12:18:53 -08:00
audit.h [PATCH] sem2mutex: audit_netlink_sem 2006-03-20 14:08:55 -05:00
auditfilter.c [PATCH] sem2mutex: audit_netlink_sem 2006-03-20 14:08:55 -05:00
auditsc.c Merge branch 'audit.b3' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current 2006-03-25 09:24:53 -08:00
capability.c [PATCH] refactor capable() to one implementation, add __capable() helper 2006-03-25 08:22:56 -08:00
compat.c [PATCH] lightweight robust futexes: compat 2006-03-27 08:44:49 -08:00
configs.c
cpu.c [PATCH] Notifier chain update: API changes 2006-03-27 08:44:50 -08:00
cpuset.c [PATCH] cpuset: memory migration interaction fix 2006-03-31 12:18:55 -08:00
dma.c
exec_domain.c [PATCH] Fix module refcount leak in __set_personality() 2006-03-24 07:33:30 -08:00
exit.c [PATCH] cleanup __exit_signal->cleanup_sighand path 2006-03-28 18:36:44 -08:00
extable.c
fork.c [PATCH] cleanup __exit_signal->cleanup_sighand path 2006-03-28 18:36:44 -08:00
futex_compat.c [PATCH] compat_sys_futex() warning fix 2006-03-28 09:16:09 -08:00
futex.c [PATCH] lightweight robust futexes updates 2006-03-27 08:44:49 -08:00
hrtimer.c [PATCH] hrtimers: remove data field 2006-03-26 08:57:03 -08:00
intermodule.c
itimer.c [PATCH] hrtimers: remove data field 2006-03-26 08:57:03 -08:00
kallsyms.c
Kconfig.hz
Kconfig.preempt
kexec.c
kfifo.c
kmod.c [PATCH] wait_for_helper: trivial style cleanup 2006-03-28 18:36:41 -08:00
kprobes.c [PATCH] kretprobe instance recycled by parent process 2006-03-26 08:57:04 -08:00
ksysfs.c [PATCH] fix build error if CONFIG_SYSFS=n 2006-03-24 07:33:31 -08:00
kthread.c [PATCH] find_task_by_pid() needs tasklist_lock 2006-03-25 08:22:57 -08:00
Makefile [PATCH] lightweight robust futexes: compat 2006-03-27 08:44:49 -08:00
module.c [PATCH] symversion warning fix 2006-03-28 09:16:02 -08:00
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
panic.c [PATCH] Notifier chain update: API changes 2006-03-27 08:44:50 -08:00
params.c [PATCH] Change dash2underscore() return value to char 2006-03-28 09:16:03 -08:00
pid.c [PATCH] pidhash: don't count idle threads 2006-03-28 18:36:41 -08:00
posix-cpu-timers.c
posix-timers.c [PATCH] hrtimers: remove data field 2006-03-26 08:57:03 -08:00
printk.c [PATCH] console_setup() depends (wrongly?) on CONFIG_PRINTK 2006-03-24 07:33:27 -08:00
profile.c [PATCH] Notifier chain update: API changes 2006-03-27 08:44:50 -08:00
ptrace.c [PATCH] don't use REMOVE_LINKS/SET_LINKS for reparenting 2006-03-28 18:36:41 -08:00
rcupdate.c [PATCH] rcu_process_callbacks: don't cli() while testing ->nxtlist 2006-03-24 07:33:20 -08:00
rcutorture.c [PATCH] for_each_possible_cpu: fixes for generic part 2006-03-28 09:16:05 -08:00
relay.c [PATCH] relay: consolidate sendfile() and read() code 2006-03-23 19:58:45 +01:00
resource.c
sched.c [PATCH] for_each_possible_cpu: fixes for generic part 2006-03-28 09:16:05 -08:00
seccomp.c
signal.c [PATCH] Fix suspend with traced tasks 2006-03-31 12:18:50 -08:00
softirq.c [PATCH] on_each_cpu(): disable local interrupts 2006-03-22 07:53:59 -08:00
softlockup.c [PATCH] Notifier chain update: API changes 2006-03-27 08:44:50 -08:00
spinlock.c [PATCH] BUILD_LOCK_OPS: cleanup preempt_disable() usage 2006-03-23 07:38:16 -08:00
stop_machine.c
sys_ni.c [PATCH] lightweight robust futexes: core 2006-03-27 08:44:49 -08:00
sys.c [PATCH] sys_times: don't take tasklist_lock 2006-03-28 18:36:43 -08:00
sysctl.c [PATCH] Range checking in do_proc_dointvec_(userhz_)jiffies_conv 2006-03-24 07:33:20 -08:00
time.c [PATCH] hrtimers: remove nsec_t typedef 2006-03-26 08:57:03 -08:00
timer.c [PATCH] __mod_timer: simplify ->base changing 2006-03-31 12:18:53 -08:00
uid16.c
user.c [PATCH] free_uid() locking improvement 2006-03-24 07:33:20 -08:00
wait.c
workqueue.c [SCSI] add execute_in_process_context() API 2006-02-27 23:34:40 -06:00