Re: [RFC PATCH 0/9] shmem: fix llseek in hugepages

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

 



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




[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