From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH 00/12] btrfs: support read-write for subpage metadata
Date: Mon, 22 Feb 2021 14:33:45 +0800 [thread overview]
Message-ID: <20210222063357.92930-1-wqu@suse.com> (raw)
This patchset can be fetched from the following github repo, along with
the full subpage RW support:
https://github.com/adam900710/linux/tree/subpage
This patchset is for metadata read write support.
[TEST]
Since the data write path is not included in this patchset, we can't
really test it, but during the lunar new year vocation, I have tested
the full RW patchset with "fstresss -n 10000 -p2" on my Aarch64 board.
And the full RW patchset survives without any crash for a full week.
There is only one remaining bug exposed during the test, that we have
random data checksum mismatch, which is still under investigation.
But the metadata part should be OK for submission.
[DIFFERENCE AGAINST REGULAR SECTORSIZE]
The metadata part in fact has more new code than data part, as it has
some different behaviors compared to the regular sector size handling:
- No more page locking
Now metadata read/write relies on extent io tree locking, other than
page locking.
This is to allow behaviors like read lock one eb while also try to
read lock another eb in the same page.
We can't rely on page lock as now we have multiple extent buffers in
the same page.
- Page status update
Now we use subpage wrappers to handle page status update.
- How to submit dirty extent buffers
Instead of just grabbing extent buffer from page::private, we need to
iterate all dirty extent buffers in the page and submit them.
Qu Wenruo (12):
btrfs: subpage: introduce helper for subpage dirty status
btrfs: subpage: introduce helper for subpage writeback status
btrfs: disk-io: allow btree_set_page_dirty() to do more sanity check
on subpage metadata
btrfs: disk-io: support subpage metadata csum calculation at write
time
btrfs: extent_io: make alloc_extent_buffer() check subpage dirty
bitmap
btrfs: extent_io: make the page uptodate assert check to handle
subpage
btrfs: extent_io: make set/clear_extent_buffer_dirty() to support
subpage sized metadata
btrfs: extent_io: make set_btree_ioerr() accept extent buffer and
handle subpage metadata
btrfs: extent_io: introduce end_bio_subpage_eb_writepage() function
btrfs: extent_io: introduce write_one_subpage_eb() function
btrfs: extent_io: make lock_extent_buffer_for_io() to support subpage
metadata
btrfs: extent_io: introduce submit_eb_subpage() to submit a subpage
metadata page
fs/btrfs/disk-io.c | 143 +++++++++++----
fs/btrfs/extent_io.c | 420 ++++++++++++++++++++++++++++++++++++-------
fs/btrfs/subpage.c | 72 ++++++++
fs/btrfs/subpage.h | 17 ++
4 files changed, 559 insertions(+), 93 deletions(-)
--
2.30.0
next reply other threads:[~2021-02-22 6:34 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-22 6:33 Qu Wenruo [this message]
2021-02-22 6:33 ` [PATCH 01/12] btrfs: subpage: introduce helper for subpage dirty status Qu Wenruo
2021-02-22 6:33 ` [PATCH 02/12] btrfs: subpage: introduce helper for subpage writeback status Qu Wenruo
2021-02-22 6:33 ` [PATCH 03/12] btrfs: disk-io: allow btree_set_page_dirty() to do more sanity check on subpage metadata Qu Wenruo
2021-02-22 7:58 ` Su Yue
2021-03-01 16:29 ` David Sterba
2021-02-22 6:33 ` [PATCH 04/12] btrfs: disk-io: support subpage metadata csum calculation at write time Qu Wenruo
2021-02-22 6:33 ` [PATCH 05/12] btrfs: extent_io: make alloc_extent_buffer() check subpage dirty bitmap Qu Wenruo
2021-02-22 6:33 ` [PATCH 06/12] btrfs: extent_io: make the page uptodate assert check to handle subpage Qu Wenruo
2021-02-22 6:33 ` [PATCH 07/12] btrfs: extent_io: make set/clear_extent_buffer_dirty() to support subpage sized metadata Qu Wenruo
2021-02-22 6:33 ` [PATCH 08/12] btrfs: extent_io: make set_btree_ioerr() accept extent buffer and handle subpage metadata Qu Wenruo
2021-02-22 6:33 ` [PATCH 09/12] btrfs: extent_io: introduce end_bio_subpage_eb_writepage() function Qu Wenruo
2021-03-01 16:33 ` David Sterba
2021-02-22 6:33 ` [PATCH 10/12] btrfs: extent_io: introduce write_one_subpage_eb() function Qu Wenruo
2021-02-22 6:33 ` [PATCH 11/12] btrfs: extent_io: make lock_extent_buffer_for_io() to support subpage metadata Qu Wenruo
2021-02-22 6:33 ` [PATCH 12/12] btrfs: extent_io: introduce submit_eb_subpage() to submit a subpage metadata page Qu Wenruo
2021-03-01 16:22 ` [PATCH 00/12] btrfs: support read-write for subpage metadata David Sterba
2021-03-01 16:30 ` David Sterba
2021-03-02 0:18 ` 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=20210222063357.92930-1-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;
as well as URLs for NNTP newsgroup(s).