summaryrefslogtreecommitdiffstats
path: root/mm/page-writeback.c
diff options
context:
space:
mode:
authorHugh Dickins2016-07-27 00:26:15 +0200
committerLinus Torvalds2016-07-27 01:19:19 +0200
commitc01d5b300774d130a24d787825b01eb24e6e20cb (patch)
treee56b92aa5cf8f25ab812da30db5b36a6126e877b /mm/page-writeback.c
parentshmem: prepare huge= mount option and sysfs knob (diff)
downloadkernel-qcow2-linux-c01d5b300774d130a24d787825b01eb24e6e20cb.tar.gz
kernel-qcow2-linux-c01d5b300774d130a24d787825b01eb24e6e20cb.tar.xz
kernel-qcow2-linux-c01d5b300774d130a24d787825b01eb24e6e20cb.zip
shmem: get_unmapped_area align huge page
Provide a shmem_get_unmapped_area method in file_operations, called at mmap time to decide the mapping address. It could be conditional on CONFIG_TRANSPARENT_HUGEPAGE, but save #ifdefs in other places by making it unconditional. shmem_get_unmapped_area() first calls the usual mm->get_unmapped_area (which we treat as a black box, highly dependent on architecture and config and executable layout). Lots of conditions, and in most cases it just goes with the address that chose; but when our huge stars are rightly aligned, yet that did not provide a suitable address, go back to ask for a larger arena, within which to align the mapping suitably. There have to be some direct calls to shmem_get_unmapped_area(), not via the file_operations: because of the way shmem_zero_setup() is called to create a shmem object late in the mmap sequence, when MAP_SHARED is requested with MAP_ANONYMOUS or /dev/zero. Though this only matters when /proc/sys/vm/shmem_huge has been set. Link: http://lkml.kernel.org/r/1466021202-61880-29-git-send-email-kirill.shutemov@linux.intel.com Signed-off-by: Hugh Dickins <hughd@google.com> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page-writeback.c')
0 files changed, 0 insertions, 0 deletions