Lines Matching refs:bio
317 * remaps the bio to the target device. we separate two flows.
344 * position the bio over the real device
453 static void raid0_handle_discard(struct mddev *mddev, struct bio *bio)
457 sector_t start = bio->bi_iter.bi_sector;
471 if (bio_end_sector(bio) > zone->zone_end) {
472 struct bio *split = bio_split(bio,
473 zone->zone_end - bio->bi_iter.bi_sector, GFP_NOIO,
475 bio_chain(split, bio);
476 submit_bio_noacct(bio);
477 bio = split;
480 end = bio_end_sector(bio);
546 md_submit_discard_bio(mddev, rdev, bio,
550 bio_endio(bio);
553 static void raid0_map_submit_bio(struct mddev *mddev, struct bio *bio)
558 sector_t bio_sector = bio->bi_iter.bi_sector;
561 md_account_bio(mddev, &bio);
573 bio_io_error(bio);
578 bio_io_error(bio);
583 bio_set_dev(bio, tmp_dev->bdev);
584 bio->bi_iter.bi_sector = sector + zone->dev_start +
586 mddev_trace_remap(mddev, bio, bio_sector);
587 mddev_check_write_zeroes(mddev, bio);
588 submit_bio_noacct(bio);
591 static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
597 if (unlikely(bio->bi_opf & REQ_PREFLUSH)
598 && md_flush_request(mddev, bio))
601 if (unlikely((bio_op(bio) == REQ_OP_DISCARD))) {
602 raid0_handle_discard(mddev, bio);
606 sector = bio->bi_iter.bi_sector;
614 if (sectors < bio_sectors(bio)) {
615 struct bio *split = bio_split(bio, sectors, GFP_NOIO,
617 bio_chain(split, bio);
618 raid0_map_submit_bio(mddev, bio);
619 bio = split;
622 raid0_map_submit_bio(mddev, bio);