Message ID | 20201202064811.100688-1-wqu@suse.com (mailing list archive) |
---|---|
Headers | show |
Series | btrfs: preparation patches for subpage support | expand |
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.