Linux Btrfs filesystem development
 help / color / mirror / Atom feed
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.

      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