On Fri, Feb 09, 2024 at 02:29:01PM +0000, Daniel Gomez wrote: > Hi, > > The following series fixes the generic/285 and generic/436 fstests for huge > pages (huge=always). These are tests for llseek (SEEK_HOLE and SEEK_DATA). > > The implementation to fix above tests is based on iomap per-block tracking for > uptodate and dirty states but applied to shmem uptodate flag. Hi Hugh, Andrew, Could you kindly provide feedback on these patches/fixes? I'd appreciate your input on whether we're headed in the right direction, or maybe not. Thanks, Daniel > > The motivation is to avoid any regressions in tmpfs once it gets support for > large folios. > > Testing with kdevops > Testing has been performed using fstests with kdevops for the v6.8-rc2 tag. > There are currently different profiles supported [1] and for each of these, > a baseline of 20 loops has been performed with the following failures for > hugepages profiles: generic/080, generic/126, generic/193, generic/245, > generic/285, generic/436, generic/551, generic/619 and generic/732. > > If anyone interested, please find all of the failures in the expunges directory: > https://github.com/linux-kdevops/kdevops/tree/master/workflows/fstests/expunges/6.8.0-rc2/tmpfs/unassigned > > [1] tmpfs profiles supported in kdevops: default, tmpfs_noswap_huge_never, > tmpfs_noswap_huge_always, tmpfs_noswap_huge_within_size, > tmpfs_noswap_huge_advise, tmpfs_huge_always, tmpfs_huge_within_size and > tmpfs_huge_advise. > > More information: > https://github.com/linux-kdevops/kdevops/tree/master/workflows/fstests/expunges/6.8.0-rc2/tmpfs/unassigned > > All the patches has been tested on top of v6.8-rc2 and rebased onto latest next > tag available (next-20240209). > > Daniel > > Daniel Gomez (8): > shmem: add per-block uptodate tracking for hugepages > 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 > > Pankaj Raghav (1): > splice: don't check for uptodate if partially uptodate is impl > > fs/splice.c | 17 ++- > mm/shmem.c | 340 ++++++++++++++++++++++++++++++++++++++++++++++++---- > 2 files changed, 332 insertions(+), 25 deletions(-) > > -- > 2.43.0