btrfs: make btrfs_split_bio work on struct btrfs_bio
btrfs_split_bio expects a btrfs_bio as argument and always allocates one. Type both the orig_bio argument and the return value as struct btrfs_bio to improve type safety. 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>
This commit is contained in:
parent
b41bbd293e
commit
2cef0c79bb
|
@ -61,30 +61,31 @@ struct btrfs_bio *btrfs_bio_alloc(unsigned int nr_vecs, blk_opf_t opf,
|
|||
return bbio;
|
||||
}
|
||||
|
||||
static struct bio *btrfs_split_bio(struct btrfs_fs_info *fs_info,
|
||||
struct bio *orig, u64 map_length,
|
||||
bool use_append)
|
||||
static struct btrfs_bio *btrfs_split_bio(struct btrfs_fs_info *fs_info,
|
||||
struct btrfs_bio *orig_bbio,
|
||||
u64 map_length, bool use_append)
|
||||
{
|
||||
struct btrfs_bio *orig_bbio = btrfs_bio(orig);
|
||||
struct btrfs_bio *bbio;
|
||||
struct bio *bio;
|
||||
|
||||
if (use_append) {
|
||||
unsigned int nr_segs;
|
||||
|
||||
bio = bio_split_rw(orig, &fs_info->limits, &nr_segs,
|
||||
bio = bio_split_rw(&orig_bbio->bio, &fs_info->limits, &nr_segs,
|
||||
&btrfs_clone_bioset, map_length);
|
||||
} else {
|
||||
bio = bio_split(orig, map_length >> SECTOR_SHIFT, GFP_NOFS,
|
||||
&btrfs_clone_bioset);
|
||||
bio = bio_split(&orig_bbio->bio, map_length >> SECTOR_SHIFT,
|
||||
GFP_NOFS, &btrfs_clone_bioset);
|
||||
}
|
||||
btrfs_bio_init(btrfs_bio(bio), orig_bbio->inode, NULL, orig_bbio);
|
||||
bbio = btrfs_bio(bio);
|
||||
btrfs_bio_init(bbio, orig_bbio->inode, NULL, orig_bbio);
|
||||
|
||||
btrfs_bio(bio)->file_offset = orig_bbio->file_offset;
|
||||
if (!(orig->bi_opf & REQ_BTRFS_ONE_ORDERED))
|
||||
bbio->file_offset = orig_bbio->file_offset;
|
||||
if (!(orig_bbio->bio.bi_opf & REQ_BTRFS_ONE_ORDERED))
|
||||
orig_bbio->file_offset += map_length;
|
||||
|
||||
atomic_inc(&orig_bbio->pending_ios);
|
||||
return bio;
|
||||
return bbio;
|
||||
}
|
||||
|
||||
static void btrfs_orig_write_end_io(struct bio *bio);
|
||||
|
@ -633,8 +634,8 @@ static bool btrfs_submit_chunk(struct btrfs_bio *bbio, int mirror_num)
|
|||
map_length = min(map_length, fs_info->max_zone_append_size);
|
||||
|
||||
if (map_length < length) {
|
||||
bio = btrfs_split_bio(fs_info, bio, map_length, use_append);
|
||||
bbio = btrfs_bio(bio);
|
||||
bbio = btrfs_split_bio(fs_info, bbio, map_length, use_append);
|
||||
bio = &bbio->bio;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue