kernel-ark/mm
Christoph Lameter 1e275d406b [PATCH] page migration: Fix MPOL_INTERLEAVE behavior for migration via mbind()
migrate_pages_to() allocates a list of new pages on the intended target
node or with the intended policy and then uses the list of new pages as
targets for the migration of a list of pages out of place.

When the pages are allocated it is not clear which of the out of place
pages will be moved to the new pages.  So we cannot specify an address as
needed by alloc_page_vma().  This causes problem for MPOL_INTERLEAVE which
will currently allocate the pages on the first node of the set.  If mbind
is used with vma that has the policy of MPOL_INTERLEAVE then the
interleaving of pages may be destroyed.

This patch fixes that by generating a fake address for each alloc_page_vma
which will result is a distribution of pages as prescribed by
MPOL_INTERLEAVE.

Lee also noted that the sequence of nodes for the new pages seems to be
inverted.  So we also invert the way the lists of pages for migration are
build.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com>
Looks-ok-to: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-24 14:31:38 -08:00
..
bootmem.c
fadvise.c
filemap_xip.c
filemap.c [PATCH] mm: migration page refcounting fix 2006-01-18 19:20:17 -08:00
filemap.h
fremap.c
highmem.c
hugetlb.c [PATCH] compound page: use page[1].lru 2006-02-14 16:09:33 -08:00
internal.h
Kconfig
madvise.c [PATCH] madvise MADV_DONTFORK/MADV_DOFORK 2006-02-14 16:09:34 -08:00
Makefile
memory_hotplug.c
memory.c [PATCH] x86_64: Add boot option to disable randomized mappings and cleanup 2006-02-17 08:00:40 -08:00
mempolicy.c [PATCH] page migration: Fix MPOL_INTERLEAVE behavior for migration via mbind() 2006-02-24 14:31:38 -08:00
mempool.c
mincore.c
mlock.c [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
mmap.c [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
mprotect.c
mremap.c [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
msync.c
nommu.c [PATCH] Fix undefined symbols for nommu architecture 2006-02-20 20:00:11 -08:00
oom_kill.c [PATCH] Terminate process that fails on a constrained allocation 2006-02-20 20:00:09 -08:00
page_alloc.c [PATCH] Terminate process that fails on a constrained allocation 2006-02-20 20:00:09 -08:00
page_io.c
page-writeback.c [PATCH] mm: dirty_exceeded speedup 2006-01-18 19:20:17 -08:00
pdflush.c
prio_tree.c
readahead.c
rmap.c [PATCH] Direct Migration V9: Avoid writeback / page_migrate() method 2006-02-01 08:53:17 -08:00
shmem.c [PATCH] tmpfs: fix mount mpol nodelist parsing 2006-02-21 17:10:15 -08:00
slab.c [PATCH] slab: Avoid deadlock at kmem_cache_create/kmem_cache_destroy 2006-02-10 08:13:12 -08:00
slob.c [PATCH] SLOB=y && SMP=y fix 2006-02-08 07:52:58 -08:00
sparse.c
swap_state.c [PATCH] Direct Migration V9: Avoid writeback / page_migrate() method 2006-02-01 08:53:17 -08:00
swap.c [PATCH] compound page: use page[1].lru 2006-02-14 16:09:33 -08:00
swapfile.c [PATCH] Direct Migration V9: remove_from_swap() to remove swap ptes 2006-02-01 08:53:16 -08:00
thrash.c
tiny-shmem.c [PATCH] do_truncate() call fix in tiny-shmem.c 2006-01-12 09:08:49 -08:00
truncate.c
util.c
vmalloc.c
vmscan.c [PATCH] vmscan: skip reclaim_mapped determination if we do not swap 2006-02-11 21:41:11 -08:00