From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org, fstests@vger.kernel.org
Subject: [PATCH v2 0/8] btrfs: do not poking into the implementation details of bio_vec
Date: Sat, 19 Apr 2025 16:47:07 +0930 [thread overview]
Message-ID: <cover.1745024799.git.wqu@suse.com> (raw)
- Fix a crash caused by incorrectly index sector_ptrs
The 5th patch, caused by missing increasement of the @offset variable.
- Use physical addresses instead of virtual addresses to handle HIGHMEM
The 6th patch, as we can still get sector_ptr from bio_sectors[] which
is using pages from the bio, and that can be highmem.
However I can not do a proper test on this, as the latest kernel has
already rejected HIGHMEM64G option, thus even if my VM has extra 3GB
for HIGHMEM (total 6GB), I'm not sure if the kernel can really utilize
those high memories.
Furthermore there seems to be other bugs in mm layer related to
HIGHMEM + PAGE, resulting zswap crash when try compressing a page to
be swapped out.
But at least several scrub/balance related test cases passed on x86
32bit with HIGHMEM and PAGE.
I have tested with x86_64 (64 bit, no HIGHMEM), aarch64 (64bit, 64K
page size, no HIGHMEM) with no regression.
- Fix a incorrect __bio_add_page() usage in scrub_bio_add_sector()
The 6th patch, as bio_add_page() do extra bvec merging before
allocating a new bvec, but __bio_add_page() does not.
This triggers WARN_ON_ONCE() in __bio_add_page() checking if the bio
is full.
Fixing it by do the old bio_add_page() and ASSERT(), with extra
comment on we can not use __bio_add_page().
- Various minor commit message update
And full proper test runs.
Christoph Hellwig (8):
btrfs: remove the alignment checks in end_bbio_data_read
btrfs: track the next file offset in struct btrfs_bio_ctrl
btrfs: pass a physical address to btrfs_repair_io_failure
btrfs: move kmapping out of btrfs_check_sector_csum
btrfs: simplify bvec iteration in index_one_bio
btrfs: raid56: store a physical address in structure sector_ptr
btrfs: scrub: use virtual addresses directly
btrfs: use bvec_kmap_local in btrfs_decompress_buf2page
fs/btrfs/bio.c | 9 +-
fs/btrfs/bio.h | 3 +-
fs/btrfs/btrfs_inode.h | 4 +-
fs/btrfs/compression.c | 9 +-
fs/btrfs/disk-io.c | 7 +-
fs/btrfs/extent_io.c | 60 ++++---------
fs/btrfs/inode.c | 20 ++---
fs/btrfs/raid56.c | 189 ++++++++++++++++++++++-------------------
fs/btrfs/scrub.c | 93 +++++++++-----------
9 files changed, 184 insertions(+), 210 deletions(-)
--
2.49.0
next 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 Qu Wenruo [this message]
2025-04-19 7:17 ` [PATCH v2 1/8] btrfs: remove the alignment checks in end_bbio_data_read Qu Wenruo
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=cover.1745024799.git.wqu@suse.com \
--to=wqu@suse.com \
--cc=fstests@vger.kernel.org \
--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