From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH v2 0/2] btrfs: go extent-by-extent for buffered reads and writes
Date: Mon, 28 Sep 2026 15:55:41 +0930 [thread overview]
Message-ID: <cover.1790576583.git.wqu@suse.com> (raw)
[CHANGELOG]
v2:
- Fix the length of advancement when no OE is found
We should still retry the next block, as there may be only a block of
gap.
Exposed by Sashiko on the 2nd patch.
Although it also exposed a false alert on the
truncate_ordered_extents_beyond_eof().
Where all the blocks in the range should have an OE, or we're having
a bigger problem.
Although we have large data folio support for a while, the bufferedL
reads and writes are still iterating a large folio block-by-block.
For a large block sized buffered IO, the large folio has a very high
chance to contain only one single extent.
In that case, although doing block-by-block checks is good for
readability, it's not really performant.
The series changes the behavior to do extent-by-extent iteration
instead, this can bring a very slight performance improve.
For best case scenario, the runtime to submit a folio read can be
reduced from 32us to 2.5us, and a much better distribution.
For writes it's not that obvious for the average runtime, but an obvious
improvment to the distribution.
My current guess for the lack of write performance improment is more
bio_add_folio() failure thus more bio allocations.
Qu Wenruo (2):
btrfs: read a folio extent-by-extent instead of block-by-block
btrfs: write back a folio extent-by-extent instead of block-by-block
fs/btrfs/extent_io.c | 313 +++++++++++++++++++++++++------------------
fs/btrfs/subpage.c | 49 +++++++
fs/btrfs/subpage.h | 4 +
3 files changed, 237 insertions(+), 129 deletions(-)
--
2.55.0
next reply other threads:[~2026-09-28 6:26 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-28 6:25 Qu Wenruo [this message]
2026-09-28 6:25 ` [PATCH v2 1/2] btrfs: read a folio extent-by-extent instead of block-by-block Qu Wenruo
2026-09-28 6:25 ` [PATCH v2 2/2] btrfs: write back " Qu Wenruo
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.1790576583.git.wqu@suse.com \
--to=wqu@suse.com \
--cc=linux-btrfs@vger.kernel.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