public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/8] btrfs: do not poking into the implementation details of bio_vec
@ 2025-04-19  7:17 Qu Wenruo
  2025-04-19  7:17 ` [PATCH v2 1/8] btrfs: remove the alignment checks in end_bbio_data_read Qu Wenruo
                   ` (8 more replies)
  0 siblings, 9 replies; 13+ messages in thread
From: Qu Wenruo @ 2025-04-19  7:17 UTC (permalink / raw)
  To: linux-btrfs, fstests

- 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


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2025-04-23  9:40 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox