[PATCH 0/9] huge tmpfs: shmem_is_huge() fixes and cleanups

From: Hugh Dickins
Date: Tue Aug 17 2021 - 04:04:13 EST


A series of huge tmpfs fixes and cleanups, suitable for 5.15, taken
from the earlier 16 "tmpfs: HUGEPAGE and MEM_LOCK fcntls and flags":
https://lore.kernel.org/linux-mm/2862852d-badd-7486-3a8e-c5ea9666d6fb@xxxxxxxxxx/

The API additions in that series have not yet been fully agreed, let's
revisit those after the 5.15 merge window, but please proceed now with
the uncontroversial preliminaries - thanks.

Still diffed against 5.14-rc3: no conflict yet with 5.14-rc6 or
linux-next or mmotm - no problems with the foliage.

Most exactly as in the 16, with a few commit comments clarified from
review; most already Reviewed-by Yang Shi (many thanks!), tags added.

Exceptions: 6/9 SGP_NOALLOC introduced to resolve our review doubts,
that and 7/9 not yet tagged, 9/9 now added from a posting last year:
Kirill's "What breaks?" if shmem_enabled "always" reminds me that
I'm still carrying the i915 THP fix, as corrected by Matthew.

1/9 huge tmpfs: fix fallocate(vanilla) advance over huge pages
2/9 huge tmpfs: fix split_huge_page() after FALLOC_FL_KEEP_SIZE
3/9 huge tmpfs: remove shrinklist addition from shmem_setattr()
4/9 huge tmpfs: revert shmem's use of transhuge_vma_enabled()
5/9 huge tmpfs: move shmem_huge_enabled() upwards
6/9 huge tmpfs: SGP_NOALLOC to stop collapse_file() on race
7/9 huge tmpfs: shmem_is_huge(vma, inode, index)
8/9 huge tmpfs: decide stat.st_blksize by shmem_is_huge()
9/9 shmem: shmem_writepage() split unlikely i915 THP

include/linux/shmem_fs.h | 23 +++-
mm/huge_memory.c | 6 -
mm/khugepaged.c | 2
mm/shmem.c | 229 ++++++++++++++++++-----------------------
4 files changed, 129 insertions(+), 131 deletions(-)

Hugh