public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: Christoph Hellwig <hch@lst.de>, Qu Wenruo <wqu@suse.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 1/8] btrfs: remove the alignment checks in end_bbio_data_read
Date: Thu, 10 Apr 2025 07:43:54 +0930	[thread overview]
Message-ID: <d0f52e89-1bd2-4a06-b142-1e18381862b6@gmx.com> (raw)
In-Reply-To: <20250409111055.3640328-2-hch@lst.de>



在 2025/4/9 20:40, Christoph Hellwig 写道:
> end_bbio_data_read checks that each iterated folio fragment is aligned
> and justifies that with block drivers advancing the bio.  But block
> driver only advance bi_iter, while end_bbio_data_read uses
> bio_for_each_folio_all to iterate the immutable bi_io_vec array that
> can't be changed by drivers at all.

The old comment indeed is incorrect, but can we still leave an ASSERT()
just in case to case any unaligned submission?

It shouldn't cause anything different for end users, but should greatly
improve the life of quality for developers.

Thanks,
Qu>
> Remove the alignment checking and the misleading comment.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>   fs/btrfs/extent_io.c | 27 +++------------------------
>   1 file changed, 3 insertions(+), 24 deletions(-)
>
> diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
> index 197f5e51c474..193736b07a0b 100644
> --- a/fs/btrfs/extent_io.c
> +++ b/fs/btrfs/extent_io.c
> @@ -512,43 +512,22 @@ static void end_bbio_data_read(struct btrfs_bio *bbio)
>   	struct btrfs_fs_info *fs_info = bbio->fs_info;
>   	struct bio *bio = &bbio->bio;
>   	struct folio_iter fi;
> -	const u32 sectorsize = fs_info->sectorsize;
>
>   	ASSERT(!bio_flagged(bio, BIO_CLONED));
>   	bio_for_each_folio_all(fi, &bbio->bio) {
>   		bool uptodate = !bio->bi_status;
>   		struct folio *folio = fi.folio;
>   		struct inode *inode = folio->mapping->host;
> -		u64 start;
> -		u64 end;
> -		u32 len;
> +		u64 start = folio_pos(folio) + fi.offset;
>
>   		btrfs_debug(fs_info,
>   			"%s: bi_sector=%llu, err=%d, mirror=%u",
>   			__func__, bio->bi_iter.bi_sector, bio->bi_status,
>   			bbio->mirror_num);
>
> -		/*
> -		 * We always issue full-sector reads, but if some block in a
> -		 * folio fails to read, blk_update_request() will advance
> -		 * bv_offset and adjust bv_len to compensate.  Print a warning
> -		 * for unaligned offsets, and an error if they don't add up to
> -		 * a full sector.
> -		 */
> -		if (!IS_ALIGNED(fi.offset, sectorsize))
> -			btrfs_err(fs_info,
> -		"partial page read in btrfs with offset %zu and length %zu",
> -				  fi.offset, fi.length);
> -		else if (!IS_ALIGNED(fi.offset + fi.length, sectorsize))
> -			btrfs_info(fs_info,
> -		"incomplete page read with offset %zu and length %zu",
> -				   fi.offset, fi.length);
> -
> -		start = folio_pos(folio) + fi.offset;
> -		end = start + fi.length - 1;
> -		len = fi.length;
>
>   		if (likely(uptodate)) {
> +			u64 end = start + fi.length - 1;
>   			loff_t i_size = i_size_read(inode);
>
>   			/*
> @@ -573,7 +552,7 @@ static void end_bbio_data_read(struct btrfs_bio *bbio)
>   		}
>
>   		/* Update page status and unlock. */
> -		end_folio_read(folio, uptodate, start, len);
> +		end_folio_read(folio, uptodate, start, fi.length);
>   	}
>   	bio_put(bio);
>   }


  reply	other threads:[~2025-04-09 22:14 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-09 11:10 RFC: (almost) stop poking into bvec internals in btrfs Christoph Hellwig
2025-04-09 11:10 ` [PATCH 1/8] btrfs: remove the alignment checks in end_bbio_data_read Christoph Hellwig
2025-04-09 22:13   ` Qu Wenruo [this message]
2025-04-10  5:30     ` Christoph Hellwig
2025-04-10  5:39       ` Qu Wenruo
2025-04-09 11:10 ` [PATCH 2/8] btrfs: track the next file offset in struct btrfs_bio_ctrl Christoph Hellwig
2025-04-09 22:15   ` Qu Wenruo
2025-04-09 11:10 ` [PATCH 3/8] btrfs: pass a physical address to btrfs_repair_io_failure Christoph Hellwig
2025-04-09 22:19   ` Qu Wenruo
2025-04-10  5:31     ` Christoph Hellwig
2025-04-10  6:06   ` Johannes Thumshirn
2025-04-10  6:17     ` hch
2025-04-09 11:10 ` [PATCH 4/8] btrfs: move kmapping out of btrfs_check_sector_csum Christoph Hellwig
2025-04-10  6:16   ` Johannes Thumshirn
2025-04-16  4:51   ` Qu Wenruo
2025-04-09 11:10 ` [PATCH 5/8] btrfs: simplify bvec iteration in index_one_bio Christoph Hellwig
2025-04-18  2:09   ` Qu Wenruo
2025-04-09 11:10 ` [PATCH 6/8] btrfs: store a kernel virtual address in struct sector_ptr Christoph Hellwig
2025-04-09 22:34   ` Qu Wenruo
2025-04-10  5:34     ` Christoph Hellwig
2025-04-14  3:04       ` Qu Wenruo
2025-04-17 23:41         ` Qu Wenruo
2025-04-09 11:10 ` [PATCH 7/8] btrfs: refactor getting the address of a stripe sector Christoph Hellwig
2025-04-09 22:38   ` Qu Wenruo
2025-04-19  1:01   ` Qu Wenruo
2025-04-09 11:10 ` [PATCH 8/8] btrfs: use bvec_kmap_local in btrfs_decompress_buf2page Christoph Hellwig

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=d0f52e89-1bd2-4a06-b142-1e18381862b6@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=hch@lst.de \
    --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