In preparation for the LSF/MM/BPF 2024 discussion [1], the patches below add support for large folios in shmem for the write and fallocate paths. [1] https://lore.kernel.org/all/4ktpayu66noklllpdpspa3vm5gbmb5boxskcj2q6qn7md3pwwt@kvlu64pqwjzl/ test This version includes per-block uptodate tracking required for lseek when enabling support for large folios. Initially, this feature was introduced to address lseek fstests (specifically generic/285 and generic/436) for huge pages. However, it was suggested that, for THP, the test should be adapted to PAGE_SIZE and PMD_SIZE. Nevertheless, with arbitrary folio orders we require the lowest granularity possible. This topic will be part of the discussion in tomorrow's session. Fstests expunges results can be found in kdevops' tree: https://github.com/linux-kdevops/kdevops/tree/main/workflows/fstests/expunges/6.9.0-shmem-large-folios-with-block-tracking/tmpfs https://github.com/linux-kdevops/kdevops/tree/main/workflows/fstests/expunges/6.8.0-shmem-large-folios-with-block-tracking/tmpfs Daniel Daniel Gomez (11): shmem: add per-block uptodate tracking for large folios shmem: move folio zero operation to write_begin() shmem: exit shmem_get_folio_gfp() if block is uptodate shmem: clear_highpage() if block is not uptodate shmem: set folio uptodate when reclaim shmem: check if a block is uptodate before splice into pipe shmem: clear uptodate blocks after PUNCH_HOLE shmem: enable per-block uptodate shmem: add order arg to shmem_alloc_folio() shmem: add file length arg in shmem_get_folio() path shmem: add large folio support to the write and fallocate paths Pankaj Raghav (1): splice: don't check for uptodate if partially uptodate is impl fs/splice.c | 17 +- fs/xfs/scrub/xfile.c | 6 +- fs/xfs/xfs_buf_mem.c | 3 +- include/linux/shmem_fs.h | 2 +- mm/khugepaged.c | 3 +- mm/shmem.c | 441 ++++++++++++++++++++++++++++++++++----- mm/userfaultfd.c | 2 +- 7 files changed, 417 insertions(+), 57 deletions(-) -- 2.43.0