From: "Pankaj Raghav (Samsung)" <kernel@pankajraghav.com>
To: david@fromorbit.com, djwong@kernel.org, chandan.babu@oracle.com,
brauner@kernel.org, akpm@linux-foundation.org,
willy@infradead.org
Cc: mcgrof@kernel.org, linux-mm@kvack.org, hare@suse.de,
linux-kernel@vger.kernel.org, yang@os.amperecomputing.com,
Zi Yan <zi.yan@sent.com>,
linux-xfs@vger.kernel.org, p.raghav@samsung.com,
linux-fsdevel@vger.kernel.org, kernel@pankajraghav.com,
hch@lst.de, gost.dev@samsung.com, cl@os.amperecomputing.com,
john.g.garry@oracle.com
Subject: [PATCH v7 00/11] enable bs > ps in XFS
Date: Fri, 7 Jun 2024 14:58:51 +0000 [thread overview]
Message-ID: <20240607145902.1137853-1-kernel@pankajraghav.com> (raw)
From: Pankaj Raghav <p.raghav@samsung.com>
This is the seventh version of the series that enables block size > page size
(Large Block Size) in XFS targetted for inclusion in 6.11.
The context and motivation can be seen in cover letter of the RFC v1 [0].
We also recorded a talk about this effort at LPC [1], if someone would
like more context on this effort.
The major change on this v6 we retry getting a folio and we enable
warning if we failed to get a folio in __filemap_get_folio if the
order <= min_order (Patch 3)[7].
A lot of emphasis has been put on testing using kdevops, starting with an XFS
baseline [3]. The testing has been split into regression and progression.
Regression testing:
In regression testing, we ran the whole test suite to check for regressions on
existing profiles due to the page cache changes.
I also ran split_huge_page_test selftest on XFS filesystem to check for
huge page splits in min order chunks is done correctly.
No regressions were found with these patches added on top.
Progression testing:
For progression testing, we tested for 8k, 16k, 32k and 64k block sizes. To
compare it with existing support, an ARM VM with 64k base page system (without
our patches) was used as a reference to check for actual failures due to LBS
support in a 4k base page size system.
There are some tests that assumes block size < page size that needs to be fixed.
We have a tree with fixes for xfstests [4], most of the changes have been posted
already, and only a few minor changes need to be posted. Already part of these
changes has been upstreamed to fstests, and new tests have also been written and
are out for review, namely for mmap zeroing-around corner cases, compaction
and fsstress races on mm, and stress testing folio truncation on file mapped
folios.
No new failures were found with the LBS support.
We've done some preliminary performance tests with fio on XFS on 4k block size
against pmem and NVMe with buffered IO and Direct IO on vanilla Vs + these
patches applied, and detected no regressions.
We also wrote an eBPF tool called blkalgn [5] to see if IO sent to the device
is aligned and at least filesystem block size in length.
For those who want this in a git tree we have this up on a kdevops
large-block-minorder-for-next-v7 tag [6].
[0] https://lore.kernel.org/lkml/20230915183848.1018717-1-kernel@pankajraghav.com/
[1] https://www.youtube.com/watch?v=ar72r5Xf7x4
[2] https://lkml.kernel.org/r/20240501153120.4094530-1-willy@infradead.org
[3] https://github.com/linux-kdevops/kdevops/blob/master/docs/xfs-bugs.md
489 non-critical issues and 55 critical issues. We've determined and reported
that the 55 critical issues have all fall into 5 common XFS asserts or hung
tasks and 2 memory management asserts.
[4] https://github.com/linux-kdevops/fstests/tree/lbs-fixes
[5] https://github.com/iovisor/bcc/pull/4813
[6] https://github.com/linux-kdevops/linux/
[7] https://lore.kernel.org/linux-kernel/Zl20pc-YlIWCSy6Z@casper.infradead.org/#t
Changes since v6:
- Warn users if we can't get a min order folio in __filemap_get_folio().
- Added iomap_dio_init() function and moved zero buffer init into that.
- Modified split_huge_pages_pid() to also consider non-anonymous memory
and removed condition for anonymous memory in split_huge_pages_file().
- Collected RVB from Hannes.
Dave Chinner (1):
xfs: use kvmalloc for xattr buffers
Hannes Reinecke (1):
readahead: rework loop in page_cache_ra_unbounded()
Luis Chamberlain (1):
mm: split a folio in minimum folio order chunks
Matthew Wilcox (Oracle) (1):
fs: Allow fine-grained control of folio sizes
Pankaj Raghav (7):
filemap: allocate mapping_min_order folios in the page cache
readahead: allocate folios with mapping_min_order in readahead
filemap: cap PTE range to be created to allowed zero fill in
folio_map_range()
iomap: fix iomap_dio_zero() for fs bs > system page size
xfs: expose block size in stat
xfs: make the calculation generic in xfs_sb_validate_fsb_count()
xfs: enable block size larger than page size support
fs/internal.h | 5 ++
fs/iomap/buffered-io.c | 6 ++
fs/iomap/direct-io.c | 26 ++++++++-
fs/xfs/libxfs/xfs_attr_leaf.c | 15 ++---
fs/xfs/libxfs/xfs_ialloc.c | 5 ++
fs/xfs/libxfs/xfs_shared.h | 3 +
fs/xfs/xfs_icache.c | 6 +-
fs/xfs/xfs_iops.c | 2 +-
fs/xfs/xfs_mount.c | 11 +++-
fs/xfs/xfs_super.c | 18 +++---
include/linux/huge_mm.h | 14 +++--
include/linux/pagemap.h | 106 +++++++++++++++++++++++++++++-----
mm/filemap.c | 38 +++++++-----
mm/huge_memory.c | 55 ++++++++++++++++--
mm/readahead.c | 98 ++++++++++++++++++++++++-------
15 files changed, 330 insertions(+), 78 deletions(-)
base-commit: d97496ca23a2d4ee80b7302849404859d9058bcd
--
2.44.1
next reply other threads:[~2024-06-07 14:59 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-07 14:58 Pankaj Raghav (Samsung) [this message]
2024-06-07 14:58 ` [PATCH v7 01/11] readahead: rework loop in page_cache_ra_unbounded() Pankaj Raghav (Samsung)
2024-06-07 14:58 ` [PATCH v7 02/11] fs: Allow fine-grained control of folio sizes Pankaj Raghav (Samsung)
2024-06-12 15:38 ` Darrick J. Wong
2024-06-07 14:58 ` [PATCH v7 03/11] filemap: allocate mapping_min_order folios in the page cache Pankaj Raghav (Samsung)
2024-06-12 9:01 ` Hannes Reinecke
2024-06-12 15:40 ` Darrick J. Wong
2024-06-12 17:24 ` Matthew Wilcox
2024-06-13 8:44 ` Christoph Hellwig
2024-06-17 9:58 ` Pankaj Raghav (Samsung)
2024-06-17 12:34 ` Matthew Wilcox
2024-06-07 14:58 ` [PATCH v7 04/11] readahead: allocate folios with mapping_min_order in readahead Pankaj Raghav (Samsung)
2024-06-12 18:50 ` Matthew Wilcox
2024-06-14 9:26 ` Pankaj Raghav (Samsung)
2024-06-17 12:32 ` Matthew Wilcox
2024-06-17 16:04 ` Pankaj Raghav (Samsung)
2024-06-17 16:10 ` Matthew Wilcox
2024-06-17 16:39 ` Pankaj Raghav (Samsung)
2024-06-18 6:56 ` Hannes Reinecke
2024-06-21 12:19 ` Pankaj Raghav (Samsung)
2024-06-21 13:28 ` Hannes Reinecke
2024-06-18 6:52 ` Hannes Reinecke
2024-06-07 14:58 ` [PATCH v7 05/11] mm: split a folio in minimum folio order chunks Pankaj Raghav (Samsung)
2024-06-07 16:58 ` Zi Yan
2024-06-07 17:01 ` Matthew Wilcox
2024-06-07 20:45 ` Pankaj Raghav (Samsung)
2024-06-07 20:30 ` Pankaj Raghav (Samsung)
2024-06-07 20:51 ` Zi Yan
2024-06-10 7:26 ` Pankaj Raghav (Samsung)
2024-06-12 9:02 ` Hannes Reinecke
2024-06-07 14:58 ` [PATCH v7 06/11] filemap: cap PTE range to be created to allowed zero fill in folio_map_range() Pankaj Raghav (Samsung)
2024-06-12 19:08 ` Matthew Wilcox
2024-06-13 7:57 ` Luis Chamberlain
2024-06-13 8:07 ` David Hildenbrand
2024-06-13 8:13 ` Luis Chamberlain
2024-06-13 8:16 ` David Hildenbrand
2024-06-13 15:27 ` Luis Chamberlain
2024-06-13 15:32 ` Matthew Wilcox
2024-06-13 15:38 ` Luis Chamberlain
2024-06-13 15:40 ` Matthew Wilcox
2024-06-13 19:39 ` Luis Chamberlain
2024-06-07 14:58 ` [PATCH v7 07/11] iomap: fix iomap_dio_zero() for fs bs > system page size Pankaj Raghav (Samsung)
2024-06-11 7:38 ` John Garry
2024-06-11 9:41 ` Pankaj Raghav (Samsung)
2024-06-11 10:00 ` John Garry
2024-06-12 20:40 ` Darrick J. Wong
2024-06-17 15:08 ` Pankaj Raghav (Samsung)
2024-06-07 14:58 ` [PATCH v7 08/11] xfs: use kvmalloc for xattr buffers Pankaj Raghav (Samsung)
2024-06-07 14:59 ` [PATCH v7 09/11] xfs: expose block size in stat Pankaj Raghav (Samsung)
2024-06-07 14:59 ` [PATCH v7 10/11] xfs: make the calculation generic in xfs_sb_validate_fsb_count() Pankaj Raghav (Samsung)
2024-06-13 8:45 ` Christoph Hellwig
2024-06-17 16:09 ` Pankaj Raghav (Samsung)
2024-06-07 14:59 ` [PATCH v7 11/11] xfs: enable block size larger than page size support Pankaj Raghav (Samsung)
2024-06-13 8:47 ` Christoph Hellwig
2024-06-17 1:29 ` Dave Chinner
2024-06-17 6:51 ` Christoph Hellwig
2024-06-17 16:31 ` Pankaj Raghav (Samsung)
2024-06-17 23:18 ` Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240607145902.1137853-1-kernel@pankajraghav.com \
--to=kernel@pankajraghav.com \
--cc=akpm@linux-foundation.org \
--cc=brauner@kernel.org \
--cc=chandan.babu@oracle.com \
--cc=cl@os.amperecomputing.com \
--cc=david@fromorbit.com \
--cc=djwong@kernel.org \
--cc=gost.dev@samsung.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=john.g.garry@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-xfs@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=p.raghav@samsung.com \
--cc=willy@infradead.org \
--cc=yang@os.amperecomputing.com \
--cc=zi.yan@sent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox