From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org, fstests@vger.kernel.org
Cc: Christoph Hellwig <hch@lst.de>
Subject: [PATCH v2 1/8] btrfs: remove the alignment checks in end_bbio_data_read
Date: Sat, 19 Apr 2025 16:47:08 +0930 [thread overview]
Message-ID: <efc486296cb74d9880acdfa6962fef4e7c8ef7b3.1745024799.git.wqu@suse.com> (raw)
In-Reply-To: <cover.1745024799.git.wqu@suse.com>
From: Christoph Hellwig <hch@lst.de>
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.
Furthermore btrfs has already did the alignment check of the file
offset inside submit_one_sector(), and the size is fixed to fs block
size, there is no need to re-do the alignment check again inside the
endio function.
So just remove the unnecessary alignment check along with the incorrect
comment.
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Qu Wenruo <wqu@suse.com>
---
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 5f08615b334f..f2fafad1add0 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -499,43 +499,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);
/*
@@ -560,7 +539,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);
}
--
2.49.0
next prev parent reply other threads:[~2025-04-19 7:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-19 7:17 [PATCH v2 0/8] btrfs: do not poking into the implementation details of bio_vec Qu Wenruo
2025-04-19 7:17 ` Qu Wenruo [this message]
2025-04-19 7:17 ` [PATCH v2 2/8] btrfs: track the next file offset in struct btrfs_bio_ctrl Qu Wenruo
2025-04-19 7:17 ` [PATCH v2 3/8] btrfs: pass a physical address to btrfs_repair_io_failure Qu Wenruo
2025-04-19 7:17 ` [PATCH v2 4/8] btrfs: move kmapping out of btrfs_check_sector_csum Qu Wenruo
2025-04-19 7:17 ` [PATCH v2 5/8] btrfs: simplify bvec iteration in index_one_bio Qu Wenruo
2025-04-19 7:17 ` [PATCH v2 6/8] btrfs: raid56: store a physical address in structure sector_ptr Qu Wenruo
2025-04-21 11:44 ` Christoph Hellwig
2025-04-22 11:31 ` David Sterba
2025-04-23 9:40 ` Qu Wenruo
2025-04-19 7:17 ` [PATCH v2 7/8] btrfs: scrub: use virtual addresses directly Qu Wenruo
2025-04-19 7:17 ` [PATCH v2 8/8] btrfs: use bvec_kmap_local in btrfs_decompress_buf2page Qu Wenruo
2025-04-21 13:29 ` [PATCH v2 0/8] btrfs: do not poking into the implementation details of bio_vec Josef Bacik
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=efc486296cb74d9880acdfa6962fef4e7c8ef7b3.1745024799.git.wqu@suse.com \
--to=wqu@suse.com \
--cc=fstests@vger.kernel.org \
--cc=hch@lst.de \
--cc=linux-btrfs@vger.kernel.org \
/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