From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH v2 00/24] btrfs: preparation patches for subpage support
Date: Fri, 13 Nov 2020 20:51:25 +0800 [thread overview]
Message-ID: <20201113125149.140836-1-wqu@suse.com> (raw)
This is the rebased preparation branch for all patches not yet merged into
misc-next.
It can be fetched from github (with RO mount support using page->private)
https://github.com/adam900710/linux/tree/subpage
This patchset includes all the unmerged preparation patches for subpage
support.
The patchset is sent without the main core for subpage support, as
myself has proven that, big patchset bombarding won't really make
reviewers happy, but only make the author happy (for a very short time).
Thanks for the hard work from David, there are only 24 patches unmerged.
Patch 01: Special hotfix, for selftests. Should be folded into the
offending patch.
Patch 02: Fix to remove invalid test cases for 64K sector size.
Patch 03~08: Refactors around endio functions (both data and
metadata)
Patch 09~14: Update metadata related handling to support subpage.
Patch 15: Make extent io bits to be u32. (no longer utilized
by later subpage, but the cleanup should still make
sense)
Patch 16~18: Refactor btrfs_lookup_bio_sums()
Patch 19~23: Scrub support for subpage
Since scrub is completely unrelated to regular data/meta
read write, the scrub support for subpage can be
implemented independently and easily.
Patch 24: Page->private related refactor, will be utilized by
later subpage patches soon.
Changelog:
v1:
- Separate prep patches from the huge subpage patchset
- Rebased to misc-next
- Add more commit message for patch "btrfs: extent_io: remove the
extent_start/extent_len for end_bio_extent_readpage()"
With one runtime example to explain why we are doing the same thing.
- Fix the assert_spin_lock() usage
What we really want is lockdep_assert_held()
- Re-iterate the reason why some extent io tests are invalid
This is especially important since later patches will reduce
extent_buffer::pages[] to bare minimal, killing the ability to
handle certain invalid extent buffers.
- Use sectorsize_bits for division
During the convert, we should only use sectorsize_bits for division,
this solves the hassle on 32bit system to do division.
But we should not use sectorsize_bits no brain, as bit shift is not
straight forward as multiple/division.
- Address the comments for btrfs_lookup_bio_sums() cleanup patchset
From naming to macro usages, all of those comments should further
improve the readability.
v2:
- Remove new extent_io tree features
Now we won't utilize extent io tree for subpage support, thus new
features along with some aggressive refactor is no longer needed.
- Reduce extent_io tree operations to reduce endio time latency
Although extent_io tree can do a lot of things like page status, but
it has obvious overhead, namingly search btree.
So keep the original behavior by only calling extent_io operation in a
big extent, to reduce latency
Qu Wenruo (24):
btrfs: tests: fix free space tree test failure on 64K page system
btrfs: extent-io-tests: remove invalid tests
btrfs: extent_io: replace extent_start/extent_len with better
structure for end_bio_extent_readpage()
btrfs: extent_io: introduce helper to handle page status update in
end_bio_extent_readpage()
btrfs: extent_io: extract the btree page submission code into its own
helper function
btrfs: remove the phy_offset parameter for
btrfs_validate_metadata_buffer()
btrfs: pass bio_offset to check_data_csum() directly
btrfs: inode: make btrfs_verify_data_csum() follow sector size
btrfs: extent_io: calculate inline extent buffer page size based on
page size
btrfs: introduce a helper to determine if the sectorsize is smaller
than PAGE_SIZE
btrfs: extent_io: don't allow tree block to cross page boundary for
subpage support
btrfs: extent_io: update num_extent_pages() to support subpage sized
extent buffer
btrfs: handle sectorsize < PAGE_SIZE case for extent buffer accessors
btrfs: disk-io: only clear EXTENT_LOCK bit for extent_invalidatepage()
btrfs: extent-io: make type of extent_state::state to be at least 32
bits
btrfs: file-item: use nodesize to determine whether we need readahead
for btrfs_lookup_bio_sums()
btrfs: file-item: remove the btrfs_find_ordered_sum() call in
btrfs_lookup_bio_sums()
btrfs: file-item: refactor btrfs_lookup_bio_sums() to handle
out-of-order bvecs
btrfs: scrub: remove the anonymous structure from scrub_page
btrfs: scrub: always allocate one full page for one sector for RAID56
btrfs: scrub: support subpage tree block scrub
btrfs: scrub: support subpage data scrub
btrfs: scrub: allow scrub to work with subpage sectorsize
btrfs: extent_io: Use detach_page_private() for alloc_extent_buffer()
fs/btrfs/compression.c | 5 +-
fs/btrfs/ctree.c | 5 +-
fs/btrfs/ctree.h | 47 +++-
fs/btrfs/disk-io.c | 2 +-
fs/btrfs/disk-io.h | 2 +-
fs/btrfs/extent-io-tree.h | 33 +--
fs/btrfs/extent_io.c | 403 +++++++++++++++++++------------
fs/btrfs/extent_io.h | 21 +-
fs/btrfs/file-item.c | 259 +++++++++++++-------
fs/btrfs/inode.c | 43 ++--
fs/btrfs/ordered-data.c | 44 ----
fs/btrfs/ordered-data.h | 2 -
fs/btrfs/scrub.c | 57 +++--
fs/btrfs/struct-funcs.c | 18 +-
fs/btrfs/tests/btrfs-tests.c | 1 +
fs/btrfs/tests/extent-io-tests.c | 26 +-
16 files changed, 584 insertions(+), 384 deletions(-)
--
2.29.2
next reply other threads:[~2020-11-13 12:52 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-13 12:51 Qu Wenruo [this message]
2020-11-13 12:51 ` [PATCH v2 01/24] btrfs: tests: fix free space tree test failure on 64K page system Qu Wenruo
2020-11-17 11:53 ` Nikolay Borisov
2020-11-13 12:51 ` [PATCH v2 02/24] btrfs: extent-io-tests: remove invalid tests Qu Wenruo
2020-11-13 18:42 ` Josef Bacik
2020-11-19 21:08 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 03/24] btrfs: extent_io: replace extent_start/extent_len with better structure for end_bio_extent_readpage() Qu Wenruo
2020-11-13 19:13 ` Josef Bacik
2020-11-18 16:05 ` David Sterba
2020-11-18 23:49 ` Qu Wenruo
2020-11-19 20:30 ` David Sterba
2020-11-19 21:08 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 04/24] btrfs: extent_io: introduce helper to handle page status update in end_bio_extent_readpage() Qu Wenruo
2020-11-13 19:18 ` Josef Bacik
2020-11-18 20:27 ` David Sterba
2020-11-18 23:43 ` Qu Wenruo
2020-11-19 18:32 ` David Sterba
2020-11-19 21:08 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 05/24] btrfs: extent_io: extract the btree page submission code into its own helper function Qu Wenruo
2020-11-13 19:22 ` Josef Bacik
2020-11-18 20:04 ` David Sterba
2020-11-18 20:09 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 06/24] btrfs: remove the phy_offset parameter for btrfs_validate_metadata_buffer() Qu Wenruo
2020-11-19 21:09 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 07/24] btrfs: pass bio_offset to check_data_csum() directly Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 08/24] btrfs: inode: make btrfs_verify_data_csum() follow sector size Qu Wenruo
2020-11-13 19:43 ` Josef Bacik
2020-11-13 12:51 ` [PATCH v2 09/24] btrfs: extent_io: calculate inline extent buffer page size based on page size Qu Wenruo
2020-11-13 19:47 ` Josef Bacik
2020-11-14 0:11 ` Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 10/24] btrfs: introduce a helper to determine if the sectorsize is smaller than PAGE_SIZE Qu Wenruo
2020-11-16 22:51 ` David Sterba
2020-11-16 23:50 ` Qu Wenruo
2020-11-17 0:24 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 11/24] btrfs: extent_io: don't allow tree block to cross page boundary for subpage support Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 12/24] btrfs: extent_io: update num_extent_pages() to support subpage sized extent buffer Qu Wenruo
2020-11-18 16:22 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 13/24] btrfs: handle sectorsize < PAGE_SIZE case for extent buffer accessors Qu Wenruo
2020-11-18 19:30 ` David Sterba
2020-11-18 19:38 ` David Sterba
2020-11-18 19:48 ` David Sterba
2020-11-24 6:20 ` Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 14/24] btrfs: disk-io: only clear EXTENT_LOCK bit for extent_invalidatepage() Qu Wenruo
2020-11-19 21:09 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 15/24] btrfs: extent-io: make type of extent_state::state to be at least 32 bits Qu Wenruo
2020-11-13 18:40 ` Josef Bacik
2020-11-18 16:11 ` David Sterba
2020-11-18 23:48 ` Qu Wenruo
2020-11-19 7:18 ` Nikolay Borisov
2020-11-19 21:09 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 16/24] btrfs: file-item: use nodesize to determine whether we need readahead for btrfs_lookup_bio_sums() Qu Wenruo
2020-11-19 21:09 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 17/24] btrfs: file-item: remove the btrfs_find_ordered_sum() call in btrfs_lookup_bio_sums() Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 18/24] btrfs: file-item: refactor btrfs_lookup_bio_sums() to handle out-of-order bvecs Qu Wenruo
2020-11-18 16:27 ` David Sterba
2020-11-18 23:57 ` Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 19/24] btrfs: scrub: remove the anonymous structure from scrub_page Qu Wenruo
2020-11-18 19:00 ` David Sterba
2020-11-19 21:09 ` David Sterba
2020-11-13 12:51 ` [PATCH v2 20/24] btrfs: scrub: always allocate one full page for one sector for RAID56 Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 21/24] btrfs: scrub: support subpage tree block scrub Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 22/24] btrfs: scrub: support subpage data scrub Qu Wenruo
2020-11-18 16:29 ` David Sterba
2020-11-18 23:38 ` Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 23/24] btrfs: scrub: allow scrub to work with subpage sectorsize Qu Wenruo
2020-11-13 12:51 ` [PATCH v2 24/24] btrfs: extent_io: Use detach_page_private() for alloc_extent_buffer() Qu Wenruo
2020-11-13 20:05 ` [PATCH v2 00/24] btrfs: preparation patches for subpage support Josef Bacik
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=20201113125149.140836-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).