Lines Matching defs:bio
12 #include "dm-bio-record.h"
240 * bio-based doesn't support any direct scsi_dh management;
286 static struct dm_mpath_io *get_mpio_from_bio(struct bio *bio)
288 return dm_per_bio_data(bio, multipath_per_bio_data_size());
293 /* dm_bio_details is immediately after the dm_mpath_io in bio's per-bio-data */
298 static void multipath_init_per_bio_data(struct bio *bio, struct dm_mpath_io **mpio_p)
300 struct dm_mpath_io *mpio = get_mpio_from_bio(bio);
303 mpio->nr_bytes = bio->bi_iter.bi_size;
308 dm_bio_record(bio_details, bio);
559 clone->bio = clone->biotail = NULL;
592 * Map cloned bios (bio-based multipath)
595 static void __multipath_queue_bio(struct multipath *m, struct bio *bio)
598 bio_list_add(&m->queued_bios, bio);
603 static void multipath_queue_bio(struct multipath *m, struct bio *bio)
608 __multipath_queue_bio(m, bio);
612 static struct pgpath *__map_bio(struct multipath *m, struct bio *bio)
620 pgpath = choose_pgpath(m, bio->bi_iter.bi_size);
625 __multipath_queue_bio(m, bio);
632 multipath_queue_bio(m, bio);
640 static int __multipath_map_bio(struct multipath *m, struct bio *bio,
643 struct pgpath *pgpath = __map_bio(m, bio);
660 bio->bi_status = 0;
661 bio_set_dev(bio, pgpath->path.dev->bdev);
662 bio->bi_opf |= REQ_FAILFAST_TRANSPORT;
671 static int multipath_map_bio(struct dm_target *ti, struct bio *bio)
676 multipath_init_per_bio_data(bio, &mpio);
677 return __multipath_map_bio(m, bio, mpio);
692 struct bio *bio;
713 while ((bio = bio_list_pop(&bios))) {
714 struct dm_mpath_io *mpio = get_mpio_from_bio(bio);
716 dm_bio_restore(get_bio_details_from_mpio(mpio), bio);
717 r = __multipath_map_bio(m, bio, mpio);
720 bio->bi_status = BLK_STS_IOERR;
721 bio_endio(bio);
724 bio->bi_status = BLK_STS_DM_REQUEUE;
725 bio_endio(bio);
728 submit_bio_noacct(bio);
1076 DMERR("bio-based multipath doesn't allow hardware handler args");
1161 if (!strcasecmp(queue_mode_name, "bio"))
1652 * bio clones. If we queue them inside the multipath target,
1653 * we need to make bio clones, that requires memory allocation.
1655 * don't have bio clones.)
1691 static int multipath_end_io_bio(struct dm_target *ti, struct bio *clone,
1747 /* FIXME: bio-based shouldn't need to always disable queue_if_no_path */
1834 DMEMIT("queue_mode bio ");