linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC v2 00/11] enable bs > ps for block devices
@ 2024-12-14  3:10 Luis Chamberlain
  2024-12-14  3:10 ` [RFC v2 01/11] fs/buffer: move async batch read code into a helper Luis Chamberlain
                   ` (10 more replies)
  0 siblings, 11 replies; 30+ messages in thread
From: Luis Chamberlain @ 2024-12-14  3:10 UTC (permalink / raw)
  To: willy, hch, hare, dave, david, djwong
  Cc: john.g.garry, ritesh.list, kbusch, linux-fsdevel, linux-xfs,
	linux-mm, linux-block, gost.dev, p.raghav, da.gomez, kernel,
	mcgrof

Now that LBS is upstream on v6.12 and we have bs > ps for filesystems
this address support for up bs > ps block devices. The first RFC v1 was
posted [0] before the turkey massacre in the US. The changes on this v2
addrsess all the feedback from that series.

The changes on this v2:

  - Simplfy with folio_pos() as suggested by Matthew Wilcox
  - To address support to reduce the buffer head array of
    size MAX_BUF_PER_PAGE to avoid stack growth growth warnings
    on systems with large base page sizes such as Hexagon with 256 KiB
    base page sizes I've added the async batch helper bh_read_batch_async()
    and iterator support for block_read_full_folio().
  - Simplify the bdev_io_min() as suggested by Christoph Hellwig
  - Collect tags, and minor comment enhancements and remove new header
    inclusions where not actually needed

This still goes out as RFCs as I'm still not done with my testing. As part
of my test plan I'm including a baseline of ext4 as we're mucking around with
buffer heads and testing xfs alone won't help to ensure we don't regress
existing buffer head users. I'm also testing XFS with 32k sector size support
given part of this enablement is to allow filesystems to also increase their
support sector size.

Patches 2-4 are really the meat and bones behind these changes and careful
review is appreciated. I suspect a bit of bike shedding potential is in order
there as well for those patches.

If you'd like to help test this, this is available in the kdevops linux
branch large-block-buffer-heads-for-next [1]. It is based on v6.13-rc2, and
on that tree has a fix not yet merged on v6.13-rc2 which is required for LBS.
That fix is already being tested and planned for v6.13-rc3, I carry since
otherwise you wound't be able to mount any LBS filesystem with a filesystem
block size larger than 16k.

[0] https://lkml.kernel.org/r/20241113094727.1497722-1-mcgrof@kernel.org
[1] https://github.com/linux-kdevops/linux/tree/large-block-buffer-heads-for-next

Hannes Reinecke (3):
  fs/mpage: use blocks_per_folio instead of blocks_per_page
  fs/mpage: avoid negative shift for large blocksize
  block/bdev: enable large folio support for large logical block sizes

Luis Chamberlain (8):
  fs/buffer: move async batch read code into a helper
  fs/buffer: add a for_each_bh() for block_read_full_folio()
  fs/buffer: add iteration support for block_read_full_folio()
  fs/buffer: reduce stack usage on bh_read_iter()
  fs/buffer fs/mpage: remove large folio restriction
  block/bdev: lift block size restrictions and use common definition
  nvme: remove superfluous block size check
  bdev: use bdev_io_min() for statx block size

 block/bdev.c             |  13 +--
 drivers/nvme/host/core.c |  10 --
 fs/buffer.c              | 209 +++++++++++++++++++++++++++------------
 fs/mpage.c               |  47 +++++----
 include/linux/blkdev.h   |  11 ++-
 5 files changed, 187 insertions(+), 103 deletions(-)

-- 
2.43.0



^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2024-12-17 21:00 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-14  3:10 [RFC v2 00/11] enable bs > ps for block devices Luis Chamberlain
2024-12-14  3:10 ` [RFC v2 01/11] fs/buffer: move async batch read code into a helper Luis Chamberlain
2024-12-17  9:56   ` Hannes Reinecke
2024-12-14  3:10 ` [RFC v2 02/11] fs/buffer: add a for_each_bh() for block_read_full_folio() Luis Chamberlain
2024-12-14  4:02   ` Matthew Wilcox
2024-12-16 18:56     ` Luis Chamberlain
2024-12-16 20:05       ` Luis Chamberlain
2024-12-16 21:46         ` Luis Chamberlain
2024-12-17  8:46       ` Luis Chamberlain
2024-12-17  9:57   ` Hannes Reinecke
2024-12-14  3:10 ` [RFC v2 03/11] fs/buffer: add iteration support " Luis Chamberlain
2024-12-17 10:00   ` Hannes Reinecke
2024-12-14  3:10 ` [RFC v2 04/11] fs/buffer: reduce stack usage on bh_read_iter() Luis Chamberlain
2024-12-17 10:04   ` Hannes Reinecke
2024-12-14  3:10 ` [RFC v2 05/11] fs/mpage: use blocks_per_folio instead of blocks_per_page Luis Chamberlain
2024-12-14  4:46   ` Matthew Wilcox
2024-12-14  3:10 ` [RFC v2 06/11] fs/mpage: avoid negative shift for large blocksize Luis Chamberlain
2024-12-14  3:10 ` [RFC v2 07/11] fs/buffer fs/mpage: remove large folio restriction Luis Chamberlain
2024-12-14  3:10 ` [RFC v2 08/11] block/bdev: enable large folio support for large logical block sizes Luis Chamberlain
2024-12-14  3:10 ` [RFC v2 09/11] block/bdev: lift block size restrictions and use common definition Luis Chamberlain
2024-12-16  8:55   ` John Garry
2024-12-16  9:19     ` Ming Lei
2024-12-16 10:13       ` John Garry
2024-12-16 10:23         ` Ming Lei
2024-12-17 20:51     ` John Garry
2024-12-17 10:05   ` Hannes Reinecke
2024-12-17 21:00   ` Bart Van Assche
2024-12-14  3:10 ` [RFC v2 10/11] nvme: remove superfluous block size check Luis Chamberlain
2024-12-15  0:39   ` Matthew Wilcox
2024-12-14  3:10 ` [RFC v2 11/11] bdev: use bdev_io_min() for statx block size Luis Chamberlain

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox