Michal Hocko
ebd6372358
hugetlb, mempolicy: fix the mbind hugetlb migration
...
do_mbind migration code relies on alloc_huge_page_noerr for hugetlb
pages. alloc_huge_page_noerr uses alloc_huge_page which is a highlevel
allocation function which has to take care of reserves, overcommit or
hugetlb cgroup accounting. None of that is really required for the page
migration because the new page is only temporal and either will replace
the original page or it will be dropped. This is essentially as for
other migration call paths and there shouldn't be any reason to handle
mbind in a special way.
The current implementation is even suboptimal because the migration
might fail just because the hugetlb cgroup limit is reached, or the
overcommit is saturated.
Fix this by making mbind like other hugetlb migration paths. Add a new
migration helper alloc_huge_page_vma as a wrapper around
alloc_huge_page_nodemask with additional mempolicy handling.
alloc_huge_page_noerr has no more users and it can go.
Link: http://lkml.kernel.org/r/20180103093213.26329-7-mhocko@kernel.org
Signed-off-by: Michal Hocko <mhocko@suse.com>
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Andrea Reale <ar@linux.vnet.ibm.com>
Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Zi Yan <zi.yan@cs.rutgers.edu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-01-31 17:18:40 -08:00
..
kasan
kasan: use %px to print addresses instead of %p
2017-11-29 12:13:16 +11:00
backing-dev.c
Revert "bdi: add error handle for bdi_debug_register"
2017-12-21 10:01:30 -07:00
balloon_compaction.c
virtio_balloon: fix deadlock on OOM
2017-11-14 23:57:38 +02:00
bootmem.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
cleancache.c
cma.c
mm/cma.c: change pr_info to pr_err for cma_alloc fail log
2017-11-15 18:21:03 -08:00
cma.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
cma_debug.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
compaction.c
mm/compaction.c: fix comment for try_to_compact_pages()
2018-01-31 17:18:39 -08:00
debug.c
mm/debug.c: provide useful debugging information for VM_BUG
2018-01-04 16:45:09 -08:00
debug_page_ref.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
dmapool.c
early_ioremap.c
mm/early_ioremap: Fix boot hang with earlyprintk=efi,keep
2017-12-11 14:54:44 +01:00
fadvise.c
mm/fadvise: discard partial page if endbyte is also EOF
2018-01-31 17:18:39 -08:00
failslab.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
filemap.c
mm/filemap.c: remove include of hardirq.h
2018-01-31 17:18:36 -08:00
frame_vector.c
mm/frame_vector.c: release a semaphore in 'get_vaddr_frames()'
2017-12-14 16:00:48 -08:00
frontswap.c
gup.c
Merge branch 'work.get_user_pages_fast' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2018-01-31 10:01:08 -08:00
gup_benchmark.c
mm: add infrastructure for get_user_pages_fast() benchmarking
2017-11-17 16:10:04 -08:00
highmem.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
hmm.c
mm/hmm: fix uninitialized use of 'entry' in hmm_vma_walk_pmd()
2018-01-31 17:18:40 -08:00
huge_memory.c
mm/thp: remove pmd_huge_split_prepare()
2018-01-31 17:18:38 -08:00
hugetlb.c
hugetlb, mempolicy: fix the mbind hugetlb migration
2018-01-31 17:18:40 -08:00
hugetlb_cgroup.c
hwpoison-inject.c
mm/memory_failure: Remove unused trapno from memory_failure
2018-01-23 12:17:42 -06:00
init-mm.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
internal.h
Revert "mm, thp: Do not make pmd/pud dirty without a reason"
2017-11-29 09:01:01 -08:00
interval_tree.c
mm/interval_tree.c: use vma_pages() helper
2018-01-31 17:18:37 -08:00
Kconfig
mm: relax deferred struct page requirements
2018-01-31 17:18:36 -08:00
Kconfig.debug
kmemcheck: rip it out
2017-11-15 18:21:05 -08:00
khugepaged.c
mm: thp: use down_read_trylock() in khugepaged to avoid long block
2018-01-31 17:18:38 -08:00
kmemleak-test.c
kmemleak.c
mm: kmemleak: remove unused hardirq.h
2018-01-31 17:18:36 -08:00
ksm.c
mm/ksm: Remove now-redundant smp_read_barrier_depends()
2017-12-04 10:52:56 -08:00
list_lru.c
mm/list_lru.c: mark expected switch fall-through
2017-11-15 18:21:07 -08:00
maccess.c
madvise.c
mm/memory_failure: Remove unused trapno from memory_failure
2018-01-23 12:17:42 -06:00
Makefile
mm: add infrastructure for get_user_pages_fast() benchmarking
2017-11-17 16:10:04 -08:00
memblock.c
mm: define memblock_virt_alloc_try_nid_raw
2017-11-15 18:21:05 -08:00
memcontrol.c
mm/memcontrol.c: try harder to decrease [memory,memsw].limit_in_bytes
2018-01-31 17:18:40 -08:00
memory-failure.c
signal/memory-failure: Use force_sig_mceerr and send_sig_mceerr
2018-01-23 12:17:48 -06:00
memory.c
mm: add unmap_mapping_pages()
2018-01-31 17:18:37 -08:00
memory_hotplug.c
mm: memory_hotplug: remove second __nr_to_section in register_page_bootmem_info_section()
2018-01-31 17:18:37 -08:00
mempolicy.c
hugetlb, mempolicy: fix the mbind hugetlb migration
2018-01-31 17:18:40 -08:00
mempool.c
mm/mempool.c: use kmalloc_array_node()
2017-11-15 18:21:02 -08:00
memtest.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
migrate.c
mm, hugetlb: do not rely on overcommit limit during migration
2018-01-31 17:18:40 -08:00
mincore.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
mlock.c
mm: Eliminate cond_resched_rcu_qs() in favor of cond_resched()
2017-11-28 16:00:28 -08:00
mm_init.c
mmap.c
mm, oom_reaper: fix memory corruption
2017-12-14 16:00:49 -08:00
mmu_context.c
mmu_notifier.c
mm, mmu_notifier: annotate mmu notifiers with blockable invalidate callbacks
2018-01-31 17:18:38 -08:00
mmzone.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
mprotect.c
mm/mprotect: add a cond_resched() inside change_pmd_range()
2018-01-04 16:45:09 -08:00
mremap.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
msync.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
nobootmem.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
nommu.c
mm: add unmap_mapping_pages()
2018-01-31 17:18:37 -08:00
oom_kill.c
mm, oom: avoid reaping only for mm's with blockable invalidate callbacks
2018-01-31 17:18:38 -08:00
page-writeback.c
Revert "mm/page-writeback.c: print a warning if the vm dirtiness settings are illogical"
2017-11-29 18:40:43 -08:00
page_alloc.c
mm/page_alloc.c: fix typos in comments
2018-01-31 17:18:39 -08:00
page_counter.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
page_ext.c
mm/page_ext.c: make page_ext_init a noop when CONFIG_PAGE_EXTENSION but nothing uses it
2018-01-31 17:18:39 -08:00
page_idle.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
page_io.c
block: convert to bio_first_bvec_all & bio_first_page_all
2018-01-06 09:18:00 -07:00
page_isolation.c
mm: distinguish CMA and MOVABLE isolation in has_unmovable_pages()
2017-11-15 18:21:02 -08:00
page_owner.c
mm/page_owner.c: clean up init_pages_in_zone()
2018-01-31 17:18:39 -08:00
page_poison.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
page_vma_mapped.c
mm, page_vma_mapped: Introduce pfn_in_hpage()
2018-01-22 12:15:57 -08:00
pagewalk.c
mm/pagewalk.c: report holes in hugetlb ranges
2017-11-15 13:12:08 -08:00
percpu-internal.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
percpu-km.c
percpu-stats.c
percpu: fix starting offset for chunk statistics traversal
2017-09-27 14:45:57 -07:00
percpu-vm.c
mm: remove __GFP_COLD
2017-11-15 18:21:06 -08:00
percpu.c
percpu: hack to let the CRIS architecture to boot until they clean up
2017-11-27 12:53:12 -08:00
pgtable-generic.c
mm: do not lose dirty and accessed bits in pmdp_invalidate()
2018-01-31 17:18:38 -08:00
process_vm_access.c
quicklist.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
readahead.c
rmap.c
mm: remove cold parameter from free_hot_cold_page*
2017-11-15 18:21:06 -08:00
rodata_test.c
mm: fix RODATA_TEST failure "rodata_test: test data was not read only"
2017-10-03 17:54:24 -07:00
shmem.c
shmem: add sealing support to hugetlb-backed memfd
2018-01-31 17:18:39 -08:00
slab.c
mm/slab.c: remove redundant assignments for slab_state
2018-01-31 17:18:35 -08:00
slab.h
mm/slab_common.c: make calculate_alignment() static
2018-01-31 17:18:35 -08:00
slab_common.c
mm/slab_common.c: make calculate_alignment() static
2018-01-31 17:18:35 -08:00
slob.c
slab, slub, slob: add slab_flags_t
2017-11-15 18:21:01 -08:00
slub.c
slub: remove obsolete comments of put_cpu_partial()
2018-01-31 17:18:36 -08:00
sparse-vmemmap.c
mm, sparse: do not swamp log with huge vmemmap allocation failures
2017-11-15 18:21:07 -08:00
sparse.c
include/linux/mmzone.h: fix explanation of lower bits in the SPARSEMEM mem_map pointer
2018-01-31 17:18:39 -08:00
swap.c
mm: drop hotplug lock from lru_add_drain_all()
2018-01-31 17:18:36 -08:00
swap_cgroup.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
swap_slots.c
mm/swap_slots.c: fix race conditions in swap_slots cache init
2017-11-15 18:21:03 -08:00
swap_state.c
mm: remove cold parameter for release_pages
2017-11-15 18:21:06 -08:00
swapfile.c
ipc, kernel, mm: annotate ->poll() instances
2017-11-27 16:20:05 -05:00
truncate.c
mm: add unmap_mapping_pages()
2018-01-31 17:18:37 -08:00
usercopy.c
userfaultfd.c
util.c
new primitive: vmemdup_user()
2018-01-07 13:06:15 -05:00
vmacache.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
vmalloc.c
Revert "vmalloc: back off when the current task is killed"
2017-10-13 16:18:32 -07:00
vmpressure.c
vmscan.c
mm: pin address_space before dereferencing it while isolating an LRU page
2018-01-31 17:18:39 -08:00
vmstat.c
mm, sysctl: make NUMA stats configurable
2017-11-15 18:21:07 -08:00
workingset.c
mm, truncate: do not check mapping for every page being truncated
2017-11-15 18:21:06 -08:00
z3fold.c
mm/z3fold.c: use kref to prevent page free/compact race
2017-11-17 16:10:00 -08:00
zbud.c
zpool.c
zswap: only save zswap header when necessary
2018-01-31 17:18:39 -08:00
zsmalloc.c
zsmalloc: use U suffix for negative literals being shifted
2018-01-31 17:18:39 -08:00
zswap.c
zswap: only save zswap header when necessary
2018-01-31 17:18:39 -08:00