btrfs: remove stripe boundary calculation for encoded I/O
authorQu Wenruo <wqu@suse.com>
Sat, 21 Jan 2023 06:50:24 +0000 (07:50 +0100)
committerDavid Sterba <dsterba@suse.com>
Wed, 15 Feb 2023 18:38:52 +0000 (19:38 +0100)
Stop looking at the stripe boundary in
btrfs_encoded_read_regular_fill_pages() now that btrfs_submit_bio can
split bios.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c

index 4ac9b34ad377d6045eb32922983f8a8de5517e07..0fd26719d3212983059b9ba65980959b57aa2431 100644 (file)
@@ -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);