linux-yocto/fs/btrfs
Qu Wenruo 7425a28940 btrfs: introduce btrfs_bio_for_each_block_all() helper
Currently if we want to iterate all blocks inside a bio, we do something
like this:

	bio_for_each_segment_all(bvec, bio, iter_all) {
		for (off = 0; off < bvec->bv_len; off += sectorsize) {
			/* Iterate blocks using bv + off */
		}
	}

That's fine for now, but it will not handle future bs > ps, as
bio_for_each_segment_all() is a single-page iterator, it will always
return a bvec that's no larger than a page.

But for bs > ps cases, we need a full folio (which covers at least one
block) so that we can work on the block.

To address this problem and handle future bs > ps cases better:

- Introduce a helper btrfs_bio_for_each_block_all()
  This helper will create a local bvec_iter, which has the size of the
  target bio. Then grab the current physical address of the current
  location, then advance the iterator by block size.

- Use btrfs_bio_for_each_block_all() to replace existing call sites
  Including:

  * set_bio_pages_uptodate() in raid56
  * verify_bio_data_sectors() in raid56

  Both will result much easier to read code.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2025-09-23 08:49:17 +02:00
..
tests btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
accessors.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
accessors.h btrfs: accessors: delete token versions of set/get helpers 2025-07-22 00:05:00 +02:00
acl.c
acl.h
async-thread.c btrfs: use list_first_entry() everywhere 2025-05-15 14:30:47 +02:00
async-thread.h
backref.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
backref.h btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
bio.c btrfs: introduce btrfs_bio_for_each_block() helper 2025-09-23 08:49:17 +02:00
bio.h btrfs: try to search for data csums in commit root 2025-09-22 10:54:31 +02:00
block-group.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
block-group.h btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
block-rsv.c btrfs: add block reserve for treelog 2025-05-15 14:30:53 +02:00
block-rsv.h btrfs: add block reserve for treelog 2025-05-15 14:30:53 +02:00
btrfs_inode.h btrfs: introduce btrfs_bio_for_each_block() helper 2025-09-23 08:49:17 +02:00
compression.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
compression.h btrfs: rename btrfs_compress_op to btrfs_compress_levels 2025-09-23 08:49:16 +02:00
ctree.c btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
ctree.h btrfs: split btrfs_is_fstree() into multiple if statements for readability 2025-07-21 23:58:04 +02:00
defrag.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
defrag.h
delalloc-space.c btrfs: add block reserve for treelog 2025-05-15 14:30:53 +02:00
delalloc-space.h btrfs: pass struct btrfs_inode to btrfs_free_reserved_data_space_noquota() 2025-05-15 14:30:52 +02:00
delayed-inode.c btrfs: print leaked references in kill_all_delayed_nodes() 2025-09-22 10:54:32 +02:00
delayed-inode.h btrfs: add mount option for ref_tracker 2025-09-22 10:54:32 +02:00
delayed-ref.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
delayed-ref.h btrfs: move ref-verify under CONFIG_BTRFS_DEBUG 2025-09-22 10:54:32 +02:00
dev-replace.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
dev-replace.h btrfs: trivial conversion to return bool instead of int 2025-05-15 14:30:49 +02:00
dir-item.c btrfs: rename inode number parameter passed to btrfs_check_dir_item_collision() 2025-07-22 00:05:00 +02:00
dir-item.h btrfs: rename inode number parameter passed to btrfs_check_dir_item_collision() 2025-07-22 00:05:00 +02:00
direct-io.c btrfs: remove superfluous return value check at btrfs_dio_iomap_begin() 2025-05-15 14:30:57 +02:00
direct-io.h
discard.c btrfs: use verbose assert at peek_discard_list() 2025-05-15 14:30:55 +02:00
discard.h
disk-io.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
disk-io.h btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
export.c btrfs: make btrfs_iget() return a btrfs inode instead 2025-03-18 20:35:50 +01:00
export.h
extent_io.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
extent_io.h btrfs: make extent_buffer_test_bit() return a boolean instead 2025-07-21 23:58:02 +02:00
extent_map.c btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
extent_map.h btrfs: rename remaining exported extent map functions 2025-05-15 14:30:45 +02:00
extent-io-tree.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
extent-io-tree.h btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
extent-tree.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
extent-tree.h btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
fiemap.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
fiemap.h
file-item.c btrfs: introduce btrfs_bio_for_each_block() helper 2025-09-23 08:49:17 +02:00
file-item.h btrfs: change return type of btrfs_alloc_dummy_sum() to int 2025-05-15 14:30:49 +02:00
file.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
file.h
free-space-cache.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
free-space-cache.h
free-space-tree.c btrfs: cache if we are using free space bitmaps for a block group 2025-07-21 23:58:03 +02:00
free-space-tree.h btrfs: add btrfs prefix to free space tree exported functions 2025-07-21 23:58:02 +02:00
fs.c btrfs: support all block sizes which is no larger than page size 2025-09-23 08:49:16 +02:00
fs.h btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
inode-item.c btrfs: remove unused parameters from btrfs_lookup_inode_extref() 2025-07-21 23:58:03 +02:00
inode-item.h btrfs: remove unused parameters from btrfs_lookup_inode_extref() 2025-07-21 23:58:03 +02:00
inode.c btrfs: introduce btrfs_bio_for_each_block() helper 2025-09-23 08:49:17 +02:00
ioctl.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
ioctl.h tree-wide: s/struct fileattr/struct file_kattr/g 2025-07-04 16:14:39 +02:00
Kconfig btrfs: implement ref_tracker for delayed_nodes 2025-09-22 10:54:32 +02:00
locking.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
locking.h btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
lru_cache.c
lru_cache.h
lzo.c btrfs: reduce compression workspace buffer space to block size 2025-09-23 08:49:16 +02:00
Makefile btrfs: move ref-verify under CONFIG_BTRFS_DEBUG 2025-09-22 10:54:32 +02:00
messages.c
messages.h btrfs: remove duplicate inclusion of linux/types.h 2025-09-22 10:54:31 +02:00
misc.h btrfs: introduce btrfs_bio_for_each_block_all() helper 2025-09-23 08:49:17 +02:00
ordered-data.c btrfs: use folio_end() where appropriate 2025-07-21 23:58:01 +02:00
ordered-data.h btrfs: introduce a read path dedicated extent lock helper 2025-03-18 20:35:48 +01:00
orphan.c
orphan.h
print-tree.c btrfs: use our message helpers instead of pr_err/pr_warn/pr_info 2025-07-21 23:58:04 +02:00
print-tree.h
props.c
props.h
qgroup.c btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
qgroup.h
raid-stripe-tree.c btrfs: unfold transaction abort at btrfs_insert_one_raid_extent() 2025-07-21 23:53:24 +02:00
raid-stripe-tree.h
raid56.c btrfs: introduce btrfs_bio_for_each_block_all() helper 2025-09-23 08:49:17 +02:00
raid56.h
ref-verify.c btrfs: ref-verify: handle damaged extent root tree 2025-09-18 05:47:34 +02:00
ref-verify.h btrfs: move ref-verify under CONFIG_BTRFS_DEBUG 2025-09-22 10:54:32 +02:00
reflink.c btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
reflink.h
relocation.c btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
relocation.h btrfs: don't print relocation messages from auto reclaim 2025-07-22 00:09:22 +02:00
root-tree.c
root-tree.h
scrub.c btrfs: concentrate highmem handling for data verification 2025-09-23 08:49:16 +02:00
scrub.h btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
send.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
send.h btrfs: pass btrfs_root pointers to send ioctl parameters 2025-03-18 20:35:49 +01:00
space-info.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
space-info.h btrfs: change dump_block_groups() in btrfs_dump_space_info() from int to bool 2025-07-21 23:58:05 +02:00
subpage.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
subpage.h btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
super.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
super.h
sysfs.c btrfs: simplify support block size check 2025-09-22 10:54:31 +02:00
sysfs.h
transaction.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
transaction.h
tree-checker.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
tree-checker.h
tree-log.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
tree-log.h
tree-mod-log.c btrfs: reduce size of struct tree_mod_elem 2025-07-22 00:09:20 +02:00
tree-mod-log.h
ulist.c btrfs: use rb_find_add() in ulist_rbtree_insert() 2025-07-21 23:53:25 +02:00
ulist.h
uuid-tree.c
uuid-tree.h
verity.c btrfs: pass struct btrfs_inode to btrfs_sync_inode_flags_to_i_flags() 2025-03-18 20:35:49 +01:00
verity.h
volumes.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
volumes.h btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
xattr.c btrfs: replace strcpy() with strscpy() 2025-07-22 00:05:00 +02:00
xattr.h
zlib.c btrfs: reduce compression workspace buffer space to block size 2025-09-23 08:49:16 +02:00
zoned.c btrfs: zoned: return error from btrfs_zone_finish_endio() 2025-09-22 10:54:30 +02:00
zoned.h btrfs: zoned: return error from btrfs_zone_finish_endio() 2025-09-22 10:54:30 +02:00
zstd.c btrfs: reduce compression workspace buffer space to block size 2025-09-23 08:49:16 +02:00