linux/include
Kirill A. Shutemov 779750d20b shmem: split huge pages beyond i_size under memory pressure
Even if user asked to allocate huge pages always (huge=always), we
should be able to free up some memory by splitting pages which are
partly byound i_size if memory presure comes or once we hit limit on
filesystem size (-o size=).

In order to do this we maintain per-superblock list of inodes, which
potentially have huge pages on the border of file size.

Per-fs shrinker can reclaim memory by splitting such pages.

If we hit -ENOSPC during shmem_getpage_gfp(), we try to split a page to
free up space on the filesystem and retry allocation if it succeed.

Link: http://lkml.kernel.org/r/1466021202-61880-37-git-send-email-kirill.shutemov@linux.intel.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>
History 2016-07-26 16:19:19 -07:00
..
acpi Revert "ACPI 2.0 / AML: Improve module level execution by moving the If/Else/While execution to per-table basis" 2016-07-11 16:21:08 +02:00
asm-generic mm/mmu_gather: track page size with mmu gather and force flush if page size change 2016-07-26 16:19:19 -07:00
clocksource clocksource/drivers/sp804: Convert init function to return error 2016-06-28 10:19:30 +02:00
crypto Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2016-05-19 09:21:36 -07:00
drm Merge branch 'drm-vmwgfx-fixes' of git://people.freedesktop.org/~syeh/repos_linux into drm-fixes 2016-07-15 13:51:55 +10:00
dt-bindings Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux 2016-05-26 09:23:43 -07:00
keys IMA: Use the the system trusted keyrings instead of .ima_mok 2016-04-11 22:49:15 +01:00
kvm arm64: KVM: fix build with CONFIG_ARM_PMU disabled 2016-06-27 12:55:51 +02:00
linux shmem: split huge pages beyond i_size under memory pressure 2016-07-26 16:19:19 -07:00
math-emu math-emu: fix floating-point to integer overflow detection 2014-01-07 18:36:24 -06:00
media Update my main e-mails at the Kernel tree 2016-06-15 15:35:37 -10:00
memory ddr: add LPDDR2 data from JESD209-2 2012-05-02 00:04:06 -07:00
misc cxl: Add kernel API to allow a context to operate with relocate disabled 2016-05-11 21:54:10 +10:00
net net: switchdev: change ageing_time type to clock_t 2016-07-19 16:49:20 -07:00
pcmcia pcmcia/ds.h: introduce helper for pcmcia_driver module boilerplate 2013-03-15 12:26:03 -07:00
ras tracing: add trace event for memory-failure 2015-06-24 17:49:43 -07:00
rdma IB/rdmavt: Correct qp_priv_alloc() return value test 2016-06-23 10:16:15 -04:00
rxrpc rxrpc: Static arrays of strings should be const char *const[] 2016-04-11 15:34:40 -04:00
scsi Merge branch '4.7/scsi-queue' of git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi into for-4.7-zac 2016-05-09 12:34:39 -04:00
soc Revert "usb: ohci-at91: Forcibly suspend ports while USB suspend" 2016-06-20 07:42:07 -07:00
sound ASoC: Updates for v4.7 2016-05-16 14:59:00 +02:00
target Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2016-05-28 12:04:17 -07:00
trace khugepaged: add support of collapse for tmpfs/shmem pages 2016-07-26 16:19:19 -07:00
uapi zsmalloc: page migration support 2016-07-26 16:19:19 -07:00
video imx-drm probing fix 2016-05-25 12:36:20 +10:00
xen xen: Fix page <-> pfn conversion on 32 bit systems 2016-04-06 11:18:17 +01:00
Kbuild UAPI: remove empty Kbuild files 2013-04-30 17:04:09 -07:00