From: Goldwyn Rodrigues <rgoldwyn@suse.de>
To: linux-kernel@vger.kernel.org
Cc: linux-fsdevel@vger.kernel.org, Goldwyn Rodrigues <rgoldwyn@suse.com>
Subject: [PATCH 00/12] btrfs reads through iomap
Date: Fri, 4 Oct 2024 16:04:27 -0400 [thread overview]
Message-ID: <cover.1728071257.git.rgoldwyn@suse.com> (raw)
From: Goldwyn Rodrigues <rgoldwyn@suse.com>
These patches incorporate btrfs buffered reads using iomap code.
The final goal here is to give all folio handling to iomap. This is the
first installment to be followed by writes, writebacks and eventually
subpage support.
The crux of the changes are:
* Since btrfs uses it's own bio handling structure, the btrfs bioset is
passed to iomap code in order to create a bio with the folios.
* For compressed extents:
- IOMAP_ENCODED which behaves like IOMAP_MAPPED, except, we supply
the iomap back to submit_io() to identify if it is encoded.
- The iomap code needs to keep a track of the previous iomap struct
in order to pass it to submit_io with the corresponding iomap
- A change in iomap struct should create a new bio
I have tested this patchset against a full run of xfstests for btrfs.
The current code does not support subpage access of iomap. Subpage
will be hopefully incorporated once the write and the writeback goes
through.
Code is available at https://github.com/goldwynr/linux/tree/buffered-iomap
Goldwyn Rodrigues (12):
iomap: check if folio size is equal to FS block size
iomap: Introduce iomap_read_folio_ops
iomap: add bioset in iomap_read_folio_ops for filesystems to use own
bioset
iomap: include iomap_read_end_io() in header
iomap: Introduce IOMAP_ENCODED
iomap: Introduce read_inline() function hook
btrfs: btrfs_em_to_iomap() to convert em to iomap
btrfs: iomap_begin() for buffered reads
btrfs: define btrfs_iomap_read_folio_ops
btrfs: define btrfs_iomap_folio_ops
btrfs: add read_inline for folio operations for read() calls
btrfs: switch to iomap for buffered reads
block/fops.c | 4 +-
fs/btrfs/bio.c | 2 +-
fs/btrfs/bio.h | 1 +
fs/btrfs/extent_io.c | 131 +++++++++++++++++++++++++++++++++++++++++
fs/erofs/data.c | 4 +-
fs/gfs2/aops.c | 4 +-
fs/iomap/buffered-io.c | 117 +++++++++++++++++++++++++-----------
fs/xfs/xfs_aops.c | 4 +-
fs/zonefs/file.c | 4 +-
include/linux/iomap.h | 37 +++++++++++-
10 files changed, 260 insertions(+), 48 deletions(-)
--
2.46.1
next reply other threads:[~2024-10-04 20:05 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-04 20:04 Goldwyn Rodrigues [this message]
2024-10-04 20:04 ` [PATCH 01/12] iomap: check if folio size is equal to FS block size Goldwyn Rodrigues
2024-10-05 2:17 ` Matthew Wilcox
2024-10-07 16:57 ` Darrick J. Wong
2024-10-10 17:59 ` Goldwyn Rodrigues
2024-10-08 9:40 ` Christoph Hellwig
2024-10-04 20:04 ` [PATCH 02/12] iomap: Introduce iomap_read_folio_ops Goldwyn Rodrigues
2024-10-05 2:20 ` Matthew Wilcox
2024-10-07 17:01 ` Darrick J. Wong
2024-10-08 9:43 ` Christoph Hellwig
2024-10-04 20:04 ` [PATCH 03/12] iomap: add bioset in iomap_read_folio_ops for filesystems to use own bioset Goldwyn Rodrigues
2024-10-08 9:45 ` Christoph Hellwig
2024-10-10 17:51 ` Goldwyn Rodrigues
2024-10-04 20:04 ` [PATCH 04/12] iomap: include iomap_read_end_io() in header Goldwyn Rodrigues
2024-10-07 17:02 ` Darrick J. Wong
2024-10-10 18:12 ` Goldwyn Rodrigues
2024-10-04 20:04 ` [PATCH 05/12] iomap: Introduce IOMAP_ENCODED Goldwyn Rodrigues
2024-10-08 9:48 ` Christoph Hellwig
2024-10-10 9:42 ` Christoph Hellwig
2024-10-10 17:50 ` Goldwyn Rodrigues
2024-10-15 3:43 ` Ritesh Harjani
2024-10-04 20:04 ` [PATCH 06/12] iomap: Introduce read_inline() function hook Goldwyn Rodrigues
2024-10-05 2:30 ` Matthew Wilcox
2024-10-07 17:47 ` Darrick J. Wong
2024-10-10 18:10 ` Goldwyn Rodrigues
2024-10-11 0:43 ` Dave Chinner
2024-10-11 3:28 ` Gao Xiang
2024-10-11 4:52 ` Dave Chinner
2024-10-11 5:19 ` Gao Xiang
2024-10-04 20:04 ` [PATCH 07/12] btrfs: btrfs_em_to_iomap() to convert em to iomap Goldwyn Rodrigues
2024-10-04 20:04 ` [PATCH 08/12] btrfs: iomap_begin() for buffered reads Goldwyn Rodrigues
2024-10-04 20:04 ` [PATCH 09/12] btrfs: define btrfs_iomap_read_folio_ops Goldwyn Rodrigues
2024-10-04 20:04 ` [PATCH 10/12] btrfs: define btrfs_iomap_folio_ops Goldwyn Rodrigues
2024-10-04 20:04 ` [PATCH 11/12] btrfs: add read_inline for folio operations for read() calls Goldwyn Rodrigues
2024-10-04 20:04 ` [PATCH 12/12] btrfs: switch to iomap for buffered reads Goldwyn Rodrigues
2024-10-08 9:39 ` [PATCH 00/12] btrfs reads through iomap Christoph Hellwig
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=cover.1728071257.git.rgoldwyn@suse.com \
--to=rgoldwyn@suse.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rgoldwyn@suse.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;
as well as URLs for NNTP newsgroup(s).