btrfs: pass a btrfs_bio to btrfs_submit_bio
authorChristoph Hellwig <hch@lst.de>
Tue, 7 Mar 2023 16:39:39 +0000 (17:39 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 17 Apr 2023 16:01:17 +0000 (18:01 +0200)
btrfs_submit_bio expects the bio passed to it to be embedded into a
btrfs_bio structure.  Pass the btrfs_bio directly to increase type
safety and make the code self-documenting.

Reviewed-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/bio.c
fs/btrfs/bio.h
fs/btrfs/compression.c
fs/btrfs/extent_io.c
fs/btrfs/inode.c

index 7265928..c04e103 100644 (file)
@@ -164,7 +164,7 @@ static void btrfs_end_repair_bio(struct btrfs_bio *repair_bbio,
                        goto done;
                }
 
-               btrfs_submit_bio(&repair_bbio->bio, mirror);
+               btrfs_submit_bio(repair_bbio, mirror);
                return;
        }
 
@@ -232,7 +232,7 @@ static struct btrfs_failed_bio *repair_one_sector(struct btrfs_bio *failed_bbio,
 
        mirror = next_repair_mirror(fbio, failed_bbio->mirror_num);
        btrfs_debug(fs_info, "submitting repair read to mirror %d", mirror);
-       btrfs_submit_bio(repair_bio, mirror);
+       btrfs_submit_bio(repair_bbio, mirror);
        return fbio;
 }
 
@@ -603,12 +603,12 @@ static bool btrfs_wq_submit_bio(struct btrfs_bio *bbio,
        return true;
 }
 
-static bool btrfs_submit_chunk(struct bio *bio, int mirror_num)
+static bool btrfs_submit_chunk(struct btrfs_bio *bbio, int mirror_num)
 {
-       struct btrfs_bio *bbio = btrfs_bio(bio);
        struct btrfs_inode *inode = bbio->inode;
        struct btrfs_fs_info *fs_info = inode->root->fs_info;
        struct btrfs_bio *orig_bbio = bbio;
+       struct bio *bio = &bbio->bio;
        u64 logical = bio->bi_iter.bi_sector << 9;
        u64 length = bio->bi_iter.bi_size;
        u64 map_length = length;
@@ -650,7 +650,7 @@ static bool btrfs_submit_chunk(struct bio *bio, int mirror_num)
                if (use_append) {
                        bio->bi_opf &= ~REQ_OP_WRITE;
                        bio->bi_opf |= REQ_OP_ZONE_APPEND;
-                       ret = btrfs_extract_ordered_extent(btrfs_bio(bio));
+                       ret = btrfs_extract_ordered_extent(bbio);
                        if (ret)
                                goto fail_put_bio;
                }
@@ -686,9 +686,9 @@ fail:
        return true;
 }
 
-void btrfs_submit_bio(struct bio *bio, int mirror_num)
+void btrfs_submit_bio(struct btrfs_bio *bbio, int mirror_num)
 {
-       while (!btrfs_submit_chunk(bio, mirror_num))
+       while (!btrfs_submit_chunk(bbio, mirror_num))
                ;
 }
 
index 873ff85..b4e7d5a 100644 (file)
@@ -88,7 +88,7 @@ static inline void btrfs_bio_end_io(struct btrfs_bio *bbio, blk_status_t status)
 /* Bio only refers to one ordered extent. */
 #define REQ_BTRFS_ONE_ORDERED                  REQ_DRV
 
-void btrfs_submit_bio(struct bio *bio, int mirror_num);
+void btrfs_submit_bio(struct btrfs_bio *bbio, int mirror_num);
 int btrfs_repair_io_failure(struct btrfs_fs_info *fs_info, u64 ino, u64 start,
                            u64 length, u64 logical, struct page *page,
                            unsigned int pg_offset, int mirror_num);
index 64c804d..27bea05 100644 (file)
@@ -333,7 +333,7 @@ void btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start,
        cb->nr_pages = nr_pages;
 
        btrfs_add_compressed_bio_pages(cb, disk_start);
-       btrfs_submit_bio(&cb->bbio.bio, 0);
+       btrfs_submit_bio(&cb->bbio, 0);
 
        if (blkcg_css)
                kthread_associate_blkcg(NULL);
@@ -565,7 +565,7 @@ void btrfs_submit_compressed_read(struct bio *bio, int mirror_num)
        if (memstall)
                psi_memstall_leave(&pflags);
 
-       btrfs_submit_bio(&cb->bbio.bio, mirror_num);
+       btrfs_submit_bio(&cb->bbio, mirror_num);
        return;
 
 out_free_compressed_pages:
index 924fcb6..2e59425 100644 (file)
@@ -157,7 +157,7 @@ static void submit_one_bio(struct btrfs_bio_ctrl *bio_ctrl)
            bio_ctrl->compress_type != BTRFS_COMPRESS_NONE)
                btrfs_submit_compressed_read(bio, mirror_num);
        else
-               btrfs_submit_bio(bio, mirror_num);
+               btrfs_submit_bio(btrfs_bio(bio), mirror_num);
 
        /* The bio is owned by the end_io handler now */
        bio_ctrl->bio = NULL;
index 25b675c..b5a82d2 100644 (file)
@@ -7761,7 +7761,7 @@ static void btrfs_dio_submit_io(const struct iomap_iter *iter, struct bio *bio,
        dip->bytes = bio->bi_iter.bi_size;
 
        dio_data->submitted += bio->bi_iter.bi_size;
-       btrfs_submit_bio(bio, 0);
+       btrfs_submit_bio(bbio, 0);
 }
 
 static const struct iomap_ops btrfs_dio_iomap_ops = {
@@ -9941,7 +9941,7 @@ int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode,
 
                if (bio_add_page(bio, pages[i], bytes, 0) < bytes) {
                        atomic_inc(&priv.pending);
-                       btrfs_submit_bio(bio, 0);
+                       btrfs_submit_bio(btrfs_bio(bio), 0);
 
                        bio = btrfs_bio_alloc(BIO_MAX_VECS, REQ_OP_READ, inode,
                                              btrfs_encoded_read_endio, &priv);
@@ -9955,7 +9955,7 @@ int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode,
        } while (disk_io_size);
 
        atomic_inc(&priv.pending);
-       btrfs_submit_bio(bio, 0);
+       btrfs_submit_bio(btrfs_bio(bio), 0);
 
        if (atomic_dec_return(&priv.pending))
                io_wait_event(priv.wait, !atomic_read(&priv.pending));