[PATCH 00/12] [LSF/MM/BPF RFC] shmem/tmpfs: add large folios support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux