From: David Sterba <dsterba@suse.cz>
To: Qu Wenruo <wqu@suse.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH v3 00/15] btrfs: preparation patches for subpage support
Date: Fri, 4 Dec 2020 16:18:25 +0100 [thread overview]
Message-ID: <20201204151825.GT6430@twin.jikos.cz> (raw)
In-Reply-To: <20201202064811.100688-1-wqu@suse.com>
On Wed, Dec 02, 2020 at 02:47:56PM +0800, Qu Wenruo wrote:
> This is the rebased preparation branch for all patches not yet merged into
> misc-next.
>
> It can be fetched from github (with experimental sector aligned data write
> support)
> 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 15 patches unmerged.
> (With 2 new small patches to address u32 u64 problem)
>
> Patch 01~02: bio_offset related fixes. Make bio_offset to be u32.
> Patch 03: Refactor metadata submission for later metadata write
> support.
> Patch 04~08: Metadata related refactor.
> Patch 09~10: Data related refactor
> Patch 11~15: Scrub related refactor and cleanup
>
> For the scrub patch, there was a discussion with David, about whether we
> should use sector size as the unit for metadata scrub.
>
> His idea is, sector size should be the minimal unit for DATA, not
> metadata. This indicates there is a undefined "minimal unit" of access.
>
> But my argument is, sector size is the minimal unit for all btrfs
> access, current btrfs has an undefined "data size", and that "data size"
> must equal to sectorsize for current btrfs implementation.
>
> Thus for "data size" < nodesize case, we should first add support for
> "data size" > sectorsize first.
>
> Thus I kept the scrub patch untouched, since IMHO sector size is still
> the minimal unit to access, thus iterating using sectorsize is
> completely sane.
>
> 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
>
> v3:
> - Rebased to latest misc-next
> Now only 15 patches to submit.
>
> - Add two new patches to address u32 and u64 problems
> The root problem is the on-disk format is abusing u64 for its length.
> We have to draw a line between where we should convert to u32.
> Currently for bio_offset and extent_len, we can safely use u32.
> Just to be extra safe, added more ASSERT() for this.
>
> - Put BTRFS_MAX_METADATA_BLOCKSIZE into uapi
> To avoid circle including "ctree.h"
>
> - Add more changelog for the patch enabling subpage scrub
>
>
> Qu Wenruo (15):
> btrfs: rename bio_offset of extent_submit_bio_start_t to
> opt_file_offset
> btrfs: pass bio_offset to check_data_csum() directly
> btrfs: inode: make btrfs_verify_data_csum() follow sector size
> btrfs: extent_io: extract the btree page submission code into its own
> helper function
> btrfs: extent_io: calculate inline extent buffer page size based on
> 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: 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: reduce the width for extent_len/stripe_len from 64 bits
> to 32 bits
> 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
With a few minor fixups it's in misc-next, thanks.
prev parent reply other threads:[~2020-12-04 15:20 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-02 6:47 [PATCH v3 00/15] btrfs: preparation patches for subpage support Qu Wenruo
2020-12-02 6:47 ` [PATCH v3 01/15] btrfs: rename bio_offset of extent_submit_bio_start_t to opt_file_offset Qu Wenruo
2020-12-02 8:12 ` Christoph Hellwig
2020-12-03 18:45 ` David Sterba
2020-12-02 6:47 ` [PATCH v3 02/15] btrfs: pass bio_offset to check_data_csum() directly Qu Wenruo
2020-12-02 6:47 ` [PATCH v3 03/15] btrfs: inode: make btrfs_verify_data_csum() follow sector size Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 04/15] btrfs: extent_io: extract the btree page submission code into its own helper function Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 05/15] btrfs: extent_io: calculate inline extent buffer page size based on page size Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 06/15] btrfs: extent_io: don't allow tree block to cross page boundary for subpage support Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 07/15] btrfs: extent_io: update num_extent_pages() to support subpage sized extent buffer Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 08/15] btrfs: handle sectorsize < PAGE_SIZE case for extent buffer accessors Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 09/15] btrfs: file-item: remove the btrfs_find_ordered_sum() call in btrfs_lookup_bio_sums() Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 10/15] btrfs: file-item: refactor btrfs_lookup_bio_sums() to handle out-of-order bvecs Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 11/15] btrfs: scrub: reduce the width for extent_len/stripe_len from 64 bits to 32 bits Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 12/15] btrfs: scrub: always allocate one full page for one sector for RAID56 Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 13/15] btrfs: scrub: support subpage tree block scrub Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 14/15] btrfs: scrub: support subpage data scrub Qu Wenruo
2020-12-02 6:48 ` [PATCH v3 15/15] btrfs: scrub: allow scrub to work with subpage sectorsize Qu Wenruo
2020-12-04 15:18 ` David Sterba [this message]
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=20201204151825.GT6430@twin.jikos.cz \
--to=dsterba@suse.cz \
--cc=linux-btrfs@vger.kernel.org \
--cc=wqu@suse.com \
/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