Message ID | 20201223112624.78955-6-jefflexu@linux.alibaba.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | dm: add support of iopoll | expand |
On Wed, Dec 23 2020 at 6:26am -0500, Jeffle Xu <jefflexu@linux.alibaba.com> wrote: > Currently the returned cookie of bio-based device is not used at all. > > In the following patches, bio-based device will actually return a > pointer to a specific object as the returned cookie. In the following patch, ... > Signed-off-by: Jeffle Xu <jefflexu@linux.alibaba.com> Reviewed-by: Mike Snitzer <snitzer@redhat.com> > --- > drivers/md/dm.c | 26 ++++++++++---------------- > 1 file changed, 10 insertions(+), 16 deletions(-) > > diff --git a/drivers/md/dm.c b/drivers/md/dm.c > index 5b2f371ec4bb..03c2b867acaa 100644 > --- a/drivers/md/dm.c > +++ b/drivers/md/dm.c > @@ -1252,14 +1252,13 @@ void dm_accept_partial_bio(struct bio *bio, unsigned n_sectors) > } > EXPORT_SYMBOL_GPL(dm_accept_partial_bio); > > -static blk_qc_t __map_bio(struct dm_target_io *tio) > +static void __map_bio(struct dm_target_io *tio) > { > int r; > sector_t sector; > struct bio *clone = &tio->clone; > struct dm_io *io = tio->io; > struct dm_target *ti = tio->ti; > - blk_qc_t ret = BLK_QC_T_NONE; > > clone->bi_end_io = clone_endio; > > @@ -1278,7 +1277,7 @@ static blk_qc_t __map_bio(struct dm_target_io *tio) > case DM_MAPIO_REMAPPED: > /* the bio has been remapped so dispatch it */ > trace_block_bio_remap(clone, bio_dev(io->orig_bio), sector); > - ret = submit_bio_noacct(clone); > + submit_bio_noacct(clone); > break; > case DM_MAPIO_KILL: > free_tio(tio); > @@ -1292,8 +1291,6 @@ static blk_qc_t __map_bio(struct dm_target_io *tio) > DMWARN("unimplemented target map return value: %d", r); > BUG(); > } > - > - return ret; > } > > static void bio_setup_sector(struct bio *bio, sector_t sector, unsigned len) > @@ -1380,7 +1377,7 @@ static void alloc_multiple_bios(struct bio_list *blist, struct clone_info *ci, > } > } > > -static blk_qc_t __clone_and_map_simple_bio(struct clone_info *ci, > +static void __clone_and_map_simple_bio(struct clone_info *ci, > struct dm_target_io *tio, unsigned *len) > { > struct bio *clone = &tio->clone; > @@ -1391,7 +1388,7 @@ static blk_qc_t __clone_and_map_simple_bio(struct clone_info *ci, > if (len) > bio_setup_sector(clone, ci->sector, *len); > > - return __map_bio(tio); > + __map_bio(tio); > } > > static void __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti, > @@ -1405,7 +1402,7 @@ static void __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti, > > while ((bio = bio_list_pop(&blist))) { > tio = container_of(bio, struct dm_target_io, clone); > - (void) __clone_and_map_simple_bio(ci, tio, len); > + __clone_and_map_simple_bio(ci, tio, len); > } > } > > @@ -1450,7 +1447,7 @@ static int __clone_and_map_data_bio(struct clone_info *ci, struct dm_target *ti, > free_tio(tio); > return r; > } > - (void) __map_bio(tio); > + __map_bio(tio); > > return 0; > } > @@ -1565,11 +1562,10 @@ static void init_clone_info(struct clone_info *ci, struct mapped_device *md, > /* > * Entry point to split a bio into clones and submit them to the targets. > */ > -static blk_qc_t __split_and_process_bio(struct mapped_device *md, > +static void __split_and_process_bio(struct mapped_device *md, > struct dm_table *map, struct bio *bio) > { > struct clone_info ci; > - blk_qc_t ret = BLK_QC_T_NONE; > int error = 0; > > init_clone_info(&ci, md, map, bio); > @@ -1613,7 +1609,7 @@ static blk_qc_t __split_and_process_bio(struct mapped_device *md, > > bio_chain(b, bio); > trace_block_split(b, bio->bi_iter.bi_sector); > - ret = submit_bio_noacct(bio); > + submit_bio_noacct(bio); > break; > } > } > @@ -1621,13 +1617,11 @@ static blk_qc_t __split_and_process_bio(struct mapped_device *md, > > /* drop the extra reference count */ > dec_pending(ci.io, errno_to_blk_status(error)); > - return ret; > } > > static blk_qc_t dm_submit_bio(struct bio *bio) > { > struct mapped_device *md = bio->bi_disk->private_data; > - blk_qc_t ret = BLK_QC_T_NONE; > int srcu_idx; > struct dm_table *map; > > @@ -1657,10 +1651,10 @@ static blk_qc_t dm_submit_bio(struct bio *bio) > if (is_abnormal_io(bio)) > blk_queue_split(&bio); > > - ret = __split_and_process_bio(md, map, bio); > + __split_and_process_bio(md, map, bio); > out: > dm_put_live_table(md, srcu_idx); > - return ret; > + return BLK_QC_T_NONE; > } > > /*----------------------------------------------------------------- > -- > 2.27.0 > > -- > dm-devel mailing list > dm-devel@redhat.com > https://www.redhat.com/mailman/listinfo/dm-devel
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 5b2f371ec4bb..03c2b867acaa 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -1252,14 +1252,13 @@ void dm_accept_partial_bio(struct bio *bio, unsigned n_sectors) } EXPORT_SYMBOL_GPL(dm_accept_partial_bio); -static blk_qc_t __map_bio(struct dm_target_io *tio) +static void __map_bio(struct dm_target_io *tio) { int r; sector_t sector; struct bio *clone = &tio->clone; struct dm_io *io = tio->io; struct dm_target *ti = tio->ti; - blk_qc_t ret = BLK_QC_T_NONE; clone->bi_end_io = clone_endio; @@ -1278,7 +1277,7 @@ static blk_qc_t __map_bio(struct dm_target_io *tio) case DM_MAPIO_REMAPPED: /* the bio has been remapped so dispatch it */ trace_block_bio_remap(clone, bio_dev(io->orig_bio), sector); - ret = submit_bio_noacct(clone); + submit_bio_noacct(clone); break; case DM_MAPIO_KILL: free_tio(tio); @@ -1292,8 +1291,6 @@ static blk_qc_t __map_bio(struct dm_target_io *tio) DMWARN("unimplemented target map return value: %d", r); BUG(); } - - return ret; } static void bio_setup_sector(struct bio *bio, sector_t sector, unsigned len) @@ -1380,7 +1377,7 @@ static void alloc_multiple_bios(struct bio_list *blist, struct clone_info *ci, } } -static blk_qc_t __clone_and_map_simple_bio(struct clone_info *ci, +static void __clone_and_map_simple_bio(struct clone_info *ci, struct dm_target_io *tio, unsigned *len) { struct bio *clone = &tio->clone; @@ -1391,7 +1388,7 @@ static blk_qc_t __clone_and_map_simple_bio(struct clone_info *ci, if (len) bio_setup_sector(clone, ci->sector, *len); - return __map_bio(tio); + __map_bio(tio); } static void __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti, @@ -1405,7 +1402,7 @@ static void __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti, while ((bio = bio_list_pop(&blist))) { tio = container_of(bio, struct dm_target_io, clone); - (void) __clone_and_map_simple_bio(ci, tio, len); + __clone_and_map_simple_bio(ci, tio, len); } } @@ -1450,7 +1447,7 @@ static int __clone_and_map_data_bio(struct clone_info *ci, struct dm_target *ti, free_tio(tio); return r; } - (void) __map_bio(tio); + __map_bio(tio); return 0; } @@ -1565,11 +1562,10 @@ static void init_clone_info(struct clone_info *ci, struct mapped_device *md, /* * Entry point to split a bio into clones and submit them to the targets. */ -static blk_qc_t __split_and_process_bio(struct mapped_device *md, +static void __split_and_process_bio(struct mapped_device *md, struct dm_table *map, struct bio *bio) { struct clone_info ci; - blk_qc_t ret = BLK_QC_T_NONE; int error = 0; init_clone_info(&ci, md, map, bio); @@ -1613,7 +1609,7 @@ static blk_qc_t __split_and_process_bio(struct mapped_device *md, bio_chain(b, bio); trace_block_split(b, bio->bi_iter.bi_sector); - ret = submit_bio_noacct(bio); + submit_bio_noacct(bio); break; } } @@ -1621,13 +1617,11 @@ static blk_qc_t __split_and_process_bio(struct mapped_device *md, /* drop the extra reference count */ dec_pending(ci.io, errno_to_blk_status(error)); - return ret; } static blk_qc_t dm_submit_bio(struct bio *bio) { struct mapped_device *md = bio->bi_disk->private_data; - blk_qc_t ret = BLK_QC_T_NONE; int srcu_idx; struct dm_table *map; @@ -1657,10 +1651,10 @@ static blk_qc_t dm_submit_bio(struct bio *bio) if (is_abnormal_io(bio)) blk_queue_split(&bio); - ret = __split_and_process_bio(md, map, bio); + __split_and_process_bio(md, map, bio); out: dm_put_live_table(md, srcu_idx); - return ret; + return BLK_QC_T_NONE; } /*-----------------------------------------------------------------
Currently the returned cookie of bio-based device is not used at all. In the following patches, bio-based device will actually return a pointer to a specific object as the returned cookie. Signed-off-by: Jeffle Xu <jefflexu@linux.alibaba.com> --- drivers/md/dm.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-)