Commit a34e4c3f authored by Qu Wenruo's avatar Qu Wenruo Committed by David Sterba
Browse files

btrfs: remove stripe boundary calculation for encoded I/O



Stop looking at the stripe boundary in
btrfs_encoded_read_regular_fill_pages() now that btrfs_submit_bio can
split bios.

Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 30493ff4
Loading
Loading
Loading
Loading
+2 −23
Original line number Diff line number Diff line
@@ -9971,7 +9971,6 @@ int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode,
					  u64 file_offset, u64 disk_bytenr,
					  u64 disk_io_size, struct page **pages)
{
	struct btrfs_fs_info *fs_info = inode->root->fs_info;
	struct btrfs_encoded_read_private priv = {
		.inode = inode,
		.file_offset = file_offset,
@@ -9979,33 +9978,13 @@ int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode,
	};
	unsigned long i = 0;
	u64 cur = 0;
	int ret;

	init_waitqueue_head(&priv.wait);
	/*
	 * Submit bios for the extent, splitting due to bio or stripe limits as
	 * necessary.
	 */
	/* Submit bios for the extent, splitting due to bio limits as necessary. */
	while (cur < disk_io_size) {
		struct extent_map *em;
		struct btrfs_io_geometry geom;
		struct bio *bio = NULL;
		u64 remaining;
		u64 remaining = disk_io_size - cur;

		em = btrfs_get_chunk_map(fs_info, disk_bytenr + cur,
					 disk_io_size - cur);
		if (IS_ERR(em)) {
			ret = PTR_ERR(em);
		} else {
			ret = btrfs_get_io_geometry(fs_info, em, BTRFS_MAP_READ,
						    disk_bytenr + cur, &geom);
			free_extent_map(em);
		}
		if (ret) {
			WRITE_ONCE(priv.status, errno_to_blk_status(ret));
			break;
		}
		remaining = min(geom.len, disk_io_size - cur);
		while (bio || remaining) {
			size_t bytes = min_t(u64, remaining, PAGE_SIZE);