]> Gentwo Git Trees - linux/.git/commit
btrfs: raid56: prepare verify_bio_data_sectors() to support bs > ps cases
authorQu Wenruo <wqu@suse.com>
Fri, 14 Nov 2025 04:00:25 +0000 (14:30 +1030)
committerDavid Sterba <dsterba@suse.com>
Tue, 25 Nov 2025 00:47:20 +0000 (01:47 +0100)
commit64e7b8c7c5873ad03e108d775fa1c0063a320070
tree727d2a52e9dd395d36deaf4c609e3bf920470b33
parente0eadfcc959d282baafb3ba0c0c1bc4461669523
btrfs: raid56: prepare verify_bio_data_sectors() to support bs > ps cases

The function verify_bio_data_sectors() assume each fs block can be mapped by
one page, blocking bs > ps support for raid56.

Prepare it for bs > ps cases by:

- Make get_bio_sector_nr() to consider bs > ps cases
  The function is utilized to calculate the sector number of a device
  bio submitted by btrfs raid56 layer.

- Assemble a local paddrs[] for checksum calculation

- Open code btrfs_check_block_csum()
  btrfs_check_block_csum() only supports fs blocks backed by large
  folios.

  But for raid56 we can have fs blocks backed by multiple non-contiguous
  pages, e.g. direct IO, encoded read/write/send.

  So instead of using btrfs_check_block_csum(), open code it to use
  btrfs_calculate_block_csum_pages().

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/raid56.c