public inbox for linux-btrfs@vger.kernel.org
 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 12/26] btrfs: make btrfs_submit_compressed_read() to determine stripe boundary at bio allocation time
Date: Mon, 4 Oct 2021 22:10:55 +0200	[thread overview]
Message-ID: <20211004201054.GD9286@twin.jikos.cz> (raw)
In-Reply-To: <20210927072208.21634-13-wqu@suse.com>

On Mon, Sep 27, 2021 at 03:21:54PM +0800, Qu Wenruo wrote:
> Currently btrfs_submit_compressed_read() will check
> btrfs_bio_fits_in_stripe() each time a new page is going to be added.
> 
> Even compressed extent is small, we don't really need to do that for
> every page.
> 
> This patch will align the behavior to extent_io.c, by determining the
> stripe boundary when allocating a bio.
> 
> Unlike extent_io.c, in compressed.c we don't need to bother things like
> different bio flags, thus no need to re-use bio_ctrl.
> 
> Here we just manually introduce new local variable, next_stripe_start,
> and teach alloc_compressed_bio() to calculate the stripe boundary.
> 
> Then each time we add some page range into the bio, we check if we
> reached the boundary.
> And if reached, submit it.
> 
> Also, since we have @cur_disk_byte to determine whether we're the last
> bio, we don't need a explicit last_bio: tag for error handling any more.
> 
> And we can use @cur_disk_byte to track which range has been added to
> bio, we can also use @cur_disk_byte to calculate the wait condition, no
> need for @pending_bios.
> 
> Signed-off-by: Qu Wenruo <wqu@suse.com>
> ---
>  fs/btrfs/compression.c | 164 +++++++++++++++++++++++------------------
>  1 file changed, 93 insertions(+), 71 deletions(-)
> 
> diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
> index 1b62677cd0f3..319d39fd1afa 100644
> --- a/fs/btrfs/compression.c
> +++ b/fs/btrfs/compression.c
> @@ -439,11 +439,18 @@ static blk_status_t submit_compressed_bio(struct btrfs_fs_info *fs_info,
>  
>  /*
>   * To allocate a compressed_bio, which will be used to read/write on-disk data.
> + *
> + * @next_stripe_start:	Disk bytenr of next stripe start

Please send an incremental followup to also document all the remaining
parameters. We're not strict about the kdoc warnings but if the code
gets touched it's better to complete it.

>   */
>  static struct bio *alloc_compressed_bio(struct compressed_bio *cb, u64 disk_bytenr,
> -					unsigned int opf, bio_end_io_t endio_func)
> +					unsigned int opf, bio_end_io_t endio_func,
> +					u64 *next_stripe_start)

  reply	other threads:[~2021-10-04 20:11 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-27  7:21 [PATCH v3 00/26] Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 01/26] btrfs: remove unused parameter @nr_pages in add_ra_bio_pages() Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 02/26] btrfs: remove unnecessary parameter @delalloc_start for writepage_delalloc() Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 03/26] btrfs: use async_chunk::async_cow to replace the confusing pending pointer Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 04/26] btrfs: don't pass compressed pages to btrfs_writepage_endio_finish_ordered() Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 05/26] btrfs: make add_ra_bio_pages() to be subpage compatible Qu Wenruo
2021-10-04 17:45   ` David Sterba
2021-10-04 22:39     ` Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 06/26] btrfs: introduce compressed_bio::pending_sectors to trace compressed bio more elegantly Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 07/26] btrfs: add subpage checked bitmap to make PageChecked flag to be subpage compatible Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 08/26] btrfs: handle errors properly inside btrfs_submit_compressed_read() Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 09/26] btrfs: handle errors properly inside btrfs_submit_compressed_write() Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 10/26] btrfs: introduce submit_compressed_bio() for compression Qu Wenruo
2021-10-04 19:42   ` David Sterba
2021-10-04 22:41     ` Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 11/26] btrfs: introduce alloc_compressed_bio() " Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 12/26] btrfs: make btrfs_submit_compressed_read() to determine stripe boundary at bio allocation time Qu Wenruo
2021-10-04 20:10   ` David Sterba [this message]
2021-10-05  6:24     ` Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 13/26] btrfs: make btrfs_submit_compressed_write() " Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 14/26] btrfs: remove unused function btrfs_bio_fits_in_stripe() Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 15/26] btrfs: refactor submit_compressed_extents() Qu Wenruo
2021-10-05 16:33   ` David Sterba
2021-09-27  7:21 ` [PATCH v3 16/26] btrfs: cleanup for extent_write_locked_range() Qu Wenruo
2021-09-27  7:21 ` [PATCH v3 17/26] btrfs: make compress_file_range() to be subpage compatible Qu Wenruo
2021-09-27  7:22 ` [PATCH v3 18/26] btrfs: make btrfs_submit_compressed_write() " Qu Wenruo
2021-09-27  7:22 ` [PATCH v3 19/26] btrfs: make end_compressed_bio_writeback() to be subpage compatble Qu Wenruo
2021-09-27  7:22 ` [PATCH v3 20/26] btrfs: make extent_write_locked_range() to be subpage compatible Qu Wenruo
2021-10-13 14:50   ` Josef Bacik
2021-10-14  0:08     ` Qu Wenruo
2021-09-27  7:22 ` [PATCH v3 21/26] btrfs: extract uncompressed async extent submission code into a new helper Qu Wenruo
2021-09-27  7:22 ` [PATCH v3 22/26] btrfs: rework lzo_compress_pages() to make it subpage compatible Qu Wenruo
2021-09-27  7:22 ` [PATCH v3 23/26] btrfs: teach __extent_writepage() to handle locked page differently Qu Wenruo
2021-09-27  7:22 ` [PATCH v3 24/26] btrfs: allow page to be unlocked by btrfs_page_end_writer_lock() even if it's locked by plain page_lock() Qu Wenruo
2021-09-27  7:22 ` [PATCH v3 25/26] btrfs: don't run delalloc range which is beyond the locked_page to prevent deadlock for subpage compression Qu Wenruo
2021-09-27  7:22 ` [PATCH v3 26/26] btrfs: only allow subpage compression if the range is fully page aligned Qu Wenruo
2021-10-05 17:21 ` [PATCH v3 00/26] David Sterba

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=20211004201054.GD9286@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