From: David Howells <dhowells@redhat.com>
To: Christian Brauner <christian@brauner.io>
Cc: David Howells <dhowells@redhat.com>,
Paulo Alcantara <pc@manguebit.org>,
Matthew Wilcox <willy@infradead.org>,
Namjae Jeon <linkinjeon@kernel.org>,
Marc Dionne <marc.dionne@auristor.com>,
Stefan Metzmacher <metze@samba.org>,
Eric Van Hensbergen <ericvh@kernel.org>,
Dominique Martinet <asmadeus@codewreck.org>,
Ilya Dryomov <idryomov@gmail.com>,
netfs@lists.linux.dev, linux-afs@lists.infradead.org,
linux-cifs@vger.kernel.org, linux-nfs@vger.kernel.org,
ceph-devel@vger.kernel.org, v9fs@lists.linux.dev,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v12 0/8] netfs: Use a bvecq chain position abstraction
Date: Mon, 5 Oct 2026 08:12:17 +0100 [thread overview]
Message-ID: <20261005071227.147182-1-dhowells@redhat.com> (raw)
Hi Christian,
Could you pull these patches please into your vfs-7.4.netfs branch? This
is the fourth of five batches. The primary purpose of this batch is to add
an abstraction for a position in a bvecq chain and make use of it.
With that in mind, this patchset does the following:
(1) Add a struct, bvecq_pos, to refer to a position in a bvecq chain.
This is a tuple of ( bvecq pointer, slot and offset } and the position
struct holds (for now) a ref on the bvecq pointed to.
(2) Change unbuffered/DIO to extract the supplied user buffers into a
bvecq chain rather than a bio_vec[] up front. This means that
netfslib then uses bvecq chains for everything.
(3) Add a folio count to the readahead_control struct and then makes
readahead pre-create its buffer using that count to determine how many
slots are required.
(4) Change netfslib to use the bvecq_pos struct to keep track of the whole
request buffer and various points in it where loading, dispatch and
collection are taking place and to also keep track of the slice given
to each subrequest.
This was split from v11 of a larger netfslib series[1].
The patches can also be found here:
https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=netfs-next-4
Thanks,
David
Changes
=======
ver #12)
- Split from v11 of "netfs: Keep track of folios in a segmented bio_vec[]
chain"[1]
[1] https://lore.kernel.org/r/20260902173350.3468672-1-dhowells@redhat.com/
David Howells (8):
mm: Make readahead store folio count in readahead_control
netfs: Add a function to extract from an iter into a bvecq
netfs: Make unbuffered/DIO read and write use bvecq
netfs: Add some tools for managing a position in a bvecq chain
netfs: Provide a func to load the readahead buffers into a bvecq chain
netfs: Use bvecq_pos to hold the buffer positions
netfs: Remove the rolling_buffer implementation
netfs: Remove netfs_extract_user_iter()
fs/afs/dir.c | 5 +-
fs/afs/symlink.c | 6 +-
fs/cachefiles/io.c | 12 -
fs/netfs/Makefile | 1 -
fs/netfs/buffered_read.c | 169 ++++++++------
fs/netfs/bvecq.c | 310 ++++++++++++++++++++++++++
fs/netfs/direct_read.c | 77 +++----
fs/netfs/direct_write.c | 67 +++---
fs/netfs/internal.h | 4 +-
fs/netfs/iterator.c | 392 ++++++++++-----------------------
fs/netfs/misc.c | 18 --
fs/netfs/objects.c | 16 +-
fs/netfs/read_collect.c | 92 ++++----
fs/netfs/read_pgpriv2.c | 87 +++++---
fs/netfs/read_retry.c | 86 ++++----
fs/netfs/read_single.c | 16 +-
fs/netfs/rolling_buffer.c | 182 ---------------
fs/netfs/write_collect.c | 55 ++---
fs/netfs/write_issue.c | 166 +++++++++-----
fs/netfs/write_retry.c | 61 +++--
include/linux/bvecq.h | 184 ++++++++++++++++
include/linux/netfs.h | 25 ++-
include/linux/pagemap.h | 10 +
include/linux/rolling_buffer.h | 47 ----
include/trace/events/netfs.h | 32 ++-
mm/readahead.c | 5 +
26 files changed, 1195 insertions(+), 930 deletions(-)
delete mode 100644 fs/netfs/rolling_buffer.c
delete mode 100644 include/linux/rolling_buffer.h
next reply other threads:[~2026-10-05 7:12 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-05 7:12 David Howells [this message]
2026-10-05 7:12 ` [PATCH v12 1/8] mm: Make readahead store folio count in readahead_control David Howells
2026-10-05 7:12 ` [PATCH v12 2/8] netfs: Add a function to extract from an iter into a bvecq David Howells
2026-10-05 7:12 ` [PATCH v12 3/8] netfs: Make unbuffered/DIO read and write use bvecq David Howells
2026-10-05 7:12 ` [PATCH v12 4/8] netfs: Add some tools for managing a position in a bvecq chain David Howells
2026-10-05 7:12 ` [PATCH v12 5/8] netfs: Provide a func to load the readahead buffers into " David Howells
2026-10-05 7:12 ` [PATCH v12 6/8] netfs: Use bvecq_pos to hold the buffer positions David Howells
2026-10-05 7:12 ` [PATCH v12 7/8] netfs: Remove the rolling_buffer implementation David Howells
2026-10-05 7:12 ` [PATCH v12 8/8] netfs: Remove netfs_extract_user_iter() David Howells
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=20261005071227.147182-1-dhowells@redhat.com \
--to=dhowells@redhat.com \
--cc=asmadeus@codewreck.org \
--cc=ceph-devel@vger.kernel.org \
--cc=christian@brauner.io \
--cc=ericvh@kernel.org \
--cc=idryomov@gmail.com \
--cc=linkinjeon@kernel.org \
--cc=linux-afs@lists.infradead.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=marc.dionne@auristor.com \
--cc=metze@samba.org \
--cc=netfs@lists.linux.dev \
--cc=pc@manguebit.org \
--cc=v9fs@lists.linux.dev \
--cc=willy@infradead.org \
/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
all inboxes | Powered by JetHome®