From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH 00/32] btrfs: preparation patches for subpage support
Date: Tue, 3 Nov 2020 21:30:36 +0800 [thread overview]
Message-ID: <20201103133108.148112-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:
https://github.com/adam900710/linux/tree/subpage_prep_rebased
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).
But we still got 32 patches for them, thus we still need a summary for
the patchset:
Patch 01~21: Generic preparation patches.
Mostly pave the way for metadata and data read.
Patch 22~24: Recent btrfs_lookup_bio_sums() cleanup
The most subpage unrelated patches, but still helps
refactor related functions for incoming subpage support.
Patch 25~32: 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.
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.
Qu Wenruo (32):
btrfs: extent_io: remove the extent_start/extent_len for
end_bio_extent_readpage()
btrfs: extent_io: integrate page status update into
endio_readpage_release_extent()
btrfs: extent_io: add lockdep_assert_held() for
attach_extent_buffer_page()
btrfs: extent_io: extract the btree page submission code into its own
helper function
btrfs: extent-io-tests: remove invalid tests
btrfs: extent_io: calculate inline extent buffer page size based on
page size
btrfs: extent_io: make btrfs_fs_info::buffer_radix to take sector size
devided values
btrfs: extent_io: sink less common parameters for __set_extent_bit()
btrfs: extent_io: sink less common parameters for __clear_extent_bit()
btrfs: disk_io: grab fs_info from extent_buffer::fs_info directly for
btrfs_mark_buffer_dirty()
btrfs: disk-io: make csum_tree_block() handle sectorsize smaller than
page size
btrfs: disk-io: extract the extent buffer verification from
btrfs_validate_metadata_buffer()
btrfs: disk-io: accept bvec directly for csum_dirty_buffer()
btrfs: inode: make btrfs_readpage_end_io_hook() follow sector size
btrfs: introduce a helper to determine if the sectorsize is smaller
than PAGE_SIZE
btrfs: extent_io: allow find_first_extent_bit() to find a range with
exact bits match
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: distinguish scrub_page from regular page
btrfs: scrub: remove the @force parameter of scrub_pages()
btrfs: scrub: use flexible array for scrub_page::csums
btrfs: scrub: refactor scrub_find_csum()
btrfs: scrub: introduce scrub_page::page_len for subpage support
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
fs/btrfs/block-group.c | 2 +-
fs/btrfs/compression.c | 5 +-
fs/btrfs/ctree.c | 5 +-
fs/btrfs/ctree.h | 45 ++-
fs/btrfs/dev-replace.c | 2 +-
fs/btrfs/disk-io.c | 98 ++++---
fs/btrfs/extent-io-tree.h | 88 ++++--
fs/btrfs/extent-tree.c | 2 +-
fs/btrfs/extent_io.c | 478 +++++++++++++++++++------------
fs/btrfs/extent_io.h | 21 +-
fs/btrfs/extent_map.c | 2 +-
fs/btrfs/file-item.c | 256 +++++++++++------
fs/btrfs/free-space-cache.c | 2 +-
fs/btrfs/inode.c | 17 +-
fs/btrfs/ordered-data.c | 44 ---
fs/btrfs/ordered-data.h | 2 -
fs/btrfs/relocation.c | 2 +-
fs/btrfs/scrub.c | 293 ++++++++++++-------
fs/btrfs/struct-funcs.c | 18 +-
fs/btrfs/tests/extent-io-tests.c | 26 +-
fs/btrfs/transaction.c | 4 +-
fs/btrfs/volumes.c | 2 +-
22 files changed, 870 insertions(+), 544 deletions(-)
--
2.29.2
next reply other threads:[~2020-11-03 13:31 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-03 13:30 Qu Wenruo [this message]
2020-11-03 13:30 ` [PATCH 01/32] btrfs: extent_io: remove the extent_start/extent_len for end_bio_extent_readpage() Qu Wenruo
2020-11-05 9:46 ` Nikolay Borisov
2020-11-05 10:15 ` Qu Wenruo
2020-11-05 10:32 ` Nikolay Borisov
2020-11-06 2:01 ` Qu Wenruo
2020-11-06 7:19 ` Qu Wenruo
2020-11-05 19:40 ` Josef Bacik
2020-11-06 1:52 ` Qu Wenruo
2020-11-03 13:30 ` [PATCH 02/32] btrfs: extent_io: integrate page status update into endio_readpage_release_extent() Qu Wenruo
2020-11-05 10:26 ` Nikolay Borisov
2020-11-05 11:15 ` Qu Wenruo
2020-11-05 10:35 ` Nikolay Borisov
2020-11-05 11:25 ` Qu Wenruo
2020-11-05 19:34 ` Josef Bacik
2020-11-03 13:30 ` [PATCH 03/32] btrfs: extent_io: add lockdep_assert_held() for attach_extent_buffer_page() Qu Wenruo
2020-11-03 13:30 ` [PATCH 04/32] btrfs: extent_io: extract the btree page submission code into its own helper function Qu Wenruo
2020-11-05 10:47 ` Nikolay Borisov
2020-11-06 18:11 ` David Sterba
2020-11-03 13:30 ` [PATCH 05/32] btrfs: extent-io-tests: remove invalid tests Qu Wenruo
2020-11-03 13:30 ` [PATCH 06/32] btrfs: extent_io: calculate inline extent buffer page size based on page size Qu Wenruo
2020-11-05 12:54 ` Nikolay Borisov
2020-11-03 13:30 ` [PATCH 07/32] btrfs: extent_io: make btrfs_fs_info::buffer_radix to take sector size devided values Qu Wenruo
2020-11-03 13:30 ` [PATCH 08/32] btrfs: extent_io: sink less common parameters for __set_extent_bit() Qu Wenruo
2020-11-05 13:35 ` Nikolay Borisov
2020-11-05 13:55 ` Qu Wenruo
2020-11-03 13:30 ` [PATCH 09/32] btrfs: extent_io: sink less common parameters for __clear_extent_bit() Qu Wenruo
2020-11-03 13:30 ` [PATCH 10/32] btrfs: disk_io: grab fs_info from extent_buffer::fs_info directly for btrfs_mark_buffer_dirty() Qu Wenruo
2020-11-05 13:45 ` Nikolay Borisov
2020-11-05 13:49 ` Nikolay Borisov
2020-11-03 13:30 ` [PATCH 11/32] btrfs: disk-io: make csum_tree_block() handle sectorsize smaller than page size Qu Wenruo
2020-11-06 18:58 ` David Sterba
2020-11-07 0:04 ` Qu Wenruo
2020-11-10 14:33 ` David Sterba
2020-11-11 0:08 ` Qu Wenruo
2020-11-03 13:30 ` [PATCH 12/32] btrfs: disk-io: extract the extent buffer verification from btrfs_validate_metadata_buffer() Qu Wenruo
2020-11-05 13:57 ` Nikolay Borisov
2020-11-06 19:03 ` David Sterba
2020-11-09 6:44 ` Qu Wenruo
2020-11-10 14:37 ` David Sterba
2020-11-03 13:30 ` [PATCH 13/32] btrfs: disk-io: accept bvec directly for csum_dirty_buffer() Qu Wenruo
2020-11-05 14:13 ` Nikolay Borisov
2020-11-03 13:30 ` [PATCH 14/32] btrfs: inode: make btrfs_readpage_end_io_hook() follow sector size Qu Wenruo
2020-11-05 14:28 ` Nikolay Borisov
2020-11-06 19:16 ` David Sterba
2020-11-06 19:20 ` David Sterba
2020-11-06 19:28 ` David Sterba
2020-11-03 13:30 ` [PATCH 15/32] btrfs: introduce a helper to determine if the sectorsize is smaller than PAGE_SIZE Qu Wenruo
2020-11-05 15:01 ` Nikolay Borisov
2020-11-05 22:52 ` Qu Wenruo
2020-11-06 17:28 ` David Sterba
2020-11-07 0:00 ` Qu Wenruo
2020-11-10 14:53 ` David Sterba
2020-11-11 1:34 ` Qu Wenruo
2020-11-11 2:21 ` Qu Wenruo
2020-11-03 13:30 ` [PATCH 16/32] btrfs: extent_io: allow find_first_extent_bit() to find a range with exact bits match Qu Wenruo
2020-11-05 15:03 ` Nikolay Borisov
2020-11-05 22:55 ` Qu Wenruo
2020-11-03 13:30 ` [PATCH 17/32] btrfs: extent_io: don't allow tree block to cross page boundary for subpage support Qu Wenruo
2020-11-06 11:54 ` Nikolay Borisov
2020-11-06 12:03 ` Nikolay Borisov
2020-11-06 13:25 ` Qu Wenruo
2020-11-06 14:04 ` Nikolay Borisov
2020-11-06 23:56 ` Qu Wenruo
2020-11-03 13:30 ` [PATCH 18/32] btrfs: extent_io: update num_extent_pages() to support subpage sized extent buffer Qu Wenruo
2020-11-06 12:09 ` Nikolay Borisov
2020-11-03 13:30 ` [PATCH 19/32] btrfs: handle sectorsize < PAGE_SIZE case for extent buffer accessors Qu Wenruo
2020-11-06 12:51 ` Nikolay Borisov
2020-11-09 5:49 ` Qu Wenruo
2020-11-03 13:30 ` [PATCH 20/32] btrfs: disk-io: only clear EXTENT_LOCK bit for extent_invalidatepage() Qu Wenruo
2020-11-06 13:17 ` Nikolay Borisov
2020-11-03 13:30 ` [PATCH 21/32] btrfs: extent-io: make type of extent_state::state to be at least 32 bits Qu Wenruo
2020-11-06 13:38 ` Nikolay Borisov
2020-11-03 13:30 ` [PATCH 22/32] btrfs: file-item: use nodesize to determine whether we need readahead for btrfs_lookup_bio_sums() Qu Wenruo
2020-11-06 13:55 ` Nikolay Borisov
2020-11-03 13:30 ` [PATCH 23/32] btrfs: file-item: remove the btrfs_find_ordered_sum() call in btrfs_lookup_bio_sums() Qu Wenruo
2020-11-06 14:28 ` Nikolay Borisov
2020-11-03 13:31 ` [PATCH 24/32] btrfs: file-item: refactor btrfs_lookup_bio_sums() to handle out-of-order bvecs Qu Wenruo
2020-11-06 15:22 ` Nikolay Borisov
2020-11-03 13:31 ` [PATCH 25/32] btrfs: scrub: distinguish scrub_page from regular page Qu Wenruo
2020-11-03 13:31 ` [PATCH 26/32] btrfs: scrub: remove the @force parameter of scrub_pages() Qu Wenruo
2020-11-03 13:31 ` [PATCH 27/32] btrfs: scrub: use flexible array for scrub_page::csums Qu Wenruo
2020-11-09 17:44 ` David Sterba
2020-11-10 0:53 ` Qu Wenruo
2020-11-10 14:22 ` David Sterba
2020-11-03 13:31 ` [PATCH 28/32] btrfs: scrub: refactor scrub_find_csum() Qu Wenruo
2020-11-03 13:31 ` [PATCH 29/32] btrfs: scrub: introduce scrub_page::page_len for subpage support Qu Wenruo
2020-11-09 18:17 ` David Sterba
2020-11-10 0:54 ` Qu Wenruo
2020-11-09 18:25 ` David Sterba
2020-11-10 0:56 ` Qu Wenruo
2020-11-10 14:27 ` David Sterba
2020-11-03 13:31 ` [PATCH 30/32] btrfs: scrub: always allocate one full page for one sector for RAID56 Qu Wenruo
2020-11-03 13:31 ` [PATCH 31/32] btrfs: scrub: support subpage tree block scrub Qu Wenruo
2020-11-09 18:31 ` David Sterba
2020-11-03 13:31 ` [PATCH 32/32] btrfs: scrub: support subpage data scrub Qu Wenruo
2020-11-05 19:28 ` [PATCH 00/32] btrfs: preparation patches for subpage support Josef Bacik
2020-11-06 0:02 ` 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=20201103133108.148112-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).