]> Git Repo - linux.git/commit
shmem: split huge pages beyond i_size under memory pressure
authorKirill A. Shutemov <[email protected]>
Tue, 26 Jul 2016 22:26:38 +0000 (15:26 -0700)
committerLinus Torvalds <[email protected]>
Tue, 26 Jul 2016 23:19:19 +0000 (16:19 -0700)
commit779750d20b93bb2e0c75dfe924f31b02f6a78bfa
treed2c97d4a8c3db37796535d5758c06841cb4781cb
parente496cf3d782135c1cca0d154d4b924517ff58de0
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 <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
include/linux/shmem_fs.h
mm/shmem.c
This page took 0.053373 seconds and 4 git commands to generate.