Commit ae42a154 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by David Sterba

btrfs: pass a btrfs_bio to btrfs_submit_bio

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: default avatarAnand Jain <anand.jain@oracle.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-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 7edb9a3e
...@@ -164,7 +164,7 @@ static void btrfs_end_repair_bio(struct btrfs_bio *repair_bbio, ...@@ -164,7 +164,7 @@ static void btrfs_end_repair_bio(struct btrfs_bio *repair_bbio,
goto done; goto done;
} }
btrfs_submit_bio(&repair_bbio->bio, mirror); btrfs_submit_bio(repair_bbio, mirror);
return; return;
} }
...@@ -232,7 +232,7 @@ static struct btrfs_failed_bio *repair_one_sector(struct btrfs_bio *failed_bbio, ...@@ -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); mirror = next_repair_mirror(fbio, failed_bbio->mirror_num);
btrfs_debug(fs_info, "submitting repair read to mirror %d", mirror); 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; return fbio;
} }
...@@ -603,12 +603,12 @@ static bool btrfs_wq_submit_bio(struct btrfs_bio *bbio, ...@@ -603,12 +603,12 @@ static bool btrfs_wq_submit_bio(struct btrfs_bio *bbio,
return true; 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_inode *inode = bbio->inode;
struct btrfs_fs_info *fs_info = inode->root->fs_info; struct btrfs_fs_info *fs_info = inode->root->fs_info;
struct btrfs_bio *orig_bbio = bbio; struct btrfs_bio *orig_bbio = bbio;
struct bio *bio = &bbio->bio;
u64 logical = bio->bi_iter.bi_sector << 9; u64 logical = bio->bi_iter.bi_sector << 9;
u64 length = bio->bi_iter.bi_size; u64 length = bio->bi_iter.bi_size;
u64 map_length = length; u64 map_length = length;
...@@ -650,7 +650,7 @@ static bool btrfs_submit_chunk(struct bio *bio, int mirror_num) ...@@ -650,7 +650,7 @@ static bool btrfs_submit_chunk(struct bio *bio, int mirror_num)
if (use_append) { if (use_append) {
bio->bi_opf &= ~REQ_OP_WRITE; bio->bi_opf &= ~REQ_OP_WRITE;
bio->bi_opf |= REQ_OP_ZONE_APPEND; bio->bi_opf |= REQ_OP_ZONE_APPEND;
ret = btrfs_extract_ordered_extent(btrfs_bio(bio)); ret = btrfs_extract_ordered_extent(bbio);
if (ret) if (ret)
goto fail_put_bio; goto fail_put_bio;
} }
...@@ -686,9 +686,9 @@ static bool btrfs_submit_chunk(struct bio *bio, int mirror_num) ...@@ -686,9 +686,9 @@ static bool btrfs_submit_chunk(struct bio *bio, int mirror_num)
return true; 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))
; ;
} }
......
...@@ -88,7 +88,7 @@ static inline void btrfs_bio_end_io(struct btrfs_bio *bbio, blk_status_t status) ...@@ -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. */ /* Bio only refers to one ordered extent. */
#define REQ_BTRFS_ONE_ORDERED REQ_DRV #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, int btrfs_repair_io_failure(struct btrfs_fs_info *fs_info, u64 ino, u64 start,
u64 length, u64 logical, struct page *page, u64 length, u64 logical, struct page *page,
unsigned int pg_offset, int mirror_num); unsigned int pg_offset, int mirror_num);
......
...@@ -333,7 +333,7 @@ void btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start, ...@@ -333,7 +333,7 @@ void btrfs_submit_compressed_write(struct btrfs_inode *inode, u64 start,
cb->nr_pages = nr_pages; cb->nr_pages = nr_pages;
btrfs_add_compressed_bio_pages(cb, disk_start); btrfs_add_compressed_bio_pages(cb, disk_start);
btrfs_submit_bio(&cb->bbio.bio, 0); btrfs_submit_bio(&cb->bbio, 0);
if (blkcg_css) if (blkcg_css)
kthread_associate_blkcg(NULL); kthread_associate_blkcg(NULL);
...@@ -565,7 +565,7 @@ void btrfs_submit_compressed_read(struct bio *bio, int mirror_num) ...@@ -565,7 +565,7 @@ void btrfs_submit_compressed_read(struct bio *bio, int mirror_num)
if (memstall) if (memstall)
psi_memstall_leave(&pflags); psi_memstall_leave(&pflags);
btrfs_submit_bio(&cb->bbio.bio, mirror_num); btrfs_submit_bio(&cb->bbio, mirror_num);
return; return;
out_free_compressed_pages: out_free_compressed_pages:
......
...@@ -157,7 +157,7 @@ static void submit_one_bio(struct btrfs_bio_ctrl *bio_ctrl) ...@@ -157,7 +157,7 @@ static void submit_one_bio(struct btrfs_bio_ctrl *bio_ctrl)
bio_ctrl->compress_type != BTRFS_COMPRESS_NONE) bio_ctrl->compress_type != BTRFS_COMPRESS_NONE)
btrfs_submit_compressed_read(bio, mirror_num); btrfs_submit_compressed_read(bio, mirror_num);
else 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 */ /* The bio is owned by the end_io handler now */
bio_ctrl->bio = NULL; bio_ctrl->bio = NULL;
......
...@@ -7761,7 +7761,7 @@ static void btrfs_dio_submit_io(const struct iomap_iter *iter, struct bio *bio, ...@@ -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; dip->bytes = bio->bi_iter.bi_size;
dio_data->submitted += 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 = { static const struct iomap_ops btrfs_dio_iomap_ops = {
...@@ -9941,7 +9941,7 @@ int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode, ...@@ -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) { if (bio_add_page(bio, pages[i], bytes, 0) < bytes) {
atomic_inc(&priv.pending); 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, bio = btrfs_bio_alloc(BIO_MAX_VECS, REQ_OP_READ, inode,
btrfs_encoded_read_endio, &priv); btrfs_encoded_read_endio, &priv);
...@@ -9955,7 +9955,7 @@ int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode, ...@@ -9955,7 +9955,7 @@ int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode,
} while (disk_io_size); } while (disk_io_size);
atomic_inc(&priv.pending); atomic_inc(&priv.pending);
btrfs_submit_bio(bio, 0); btrfs_submit_bio(btrfs_bio(bio), 0);
if (atomic_dec_return(&priv.pending)) if (atomic_dec_return(&priv.pending))
io_wait_event(priv.wait, !atomic_read(&priv.pending)); io_wait_event(priv.wait, !atomic_read(&priv.pending));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment