Lines Matching defs:bio
317 * remaps the bio to the target device. we separate two flows.
344 * position the bio over the real device
448 static void raid0_handle_discard(struct mddev *mddev, struct bio *bio)
452 sector_t start = bio->bi_iter.bi_sector;
466 if (bio_end_sector(bio) > zone->zone_end) {
467 struct bio *split = bio_split(bio,
468 zone->zone_end - bio->bi_iter.bi_sector, GFP_NOIO,
470 bio_chain(split, bio);
471 submit_bio_noacct(bio);
472 bio = split;
475 end = bio_end_sector(bio);
541 md_submit_discard_bio(mddev, rdev, bio,
545 bio_endio(bio);
548 static void raid0_map_submit_bio(struct mddev *mddev, struct bio *bio)
553 sector_t bio_sector = bio->bi_iter.bi_sector;
556 md_account_bio(mddev, &bio);
568 bio_io_error(bio);
573 bio_io_error(bio);
578 bio_set_dev(bio, tmp_dev->bdev);
579 bio->bi_iter.bi_sector = sector + zone->dev_start +
583 trace_block_bio_remap(bio, disk_devt(mddev->gendisk),
585 mddev_check_write_zeroes(mddev, bio);
586 submit_bio_noacct(bio);
589 static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
595 if (unlikely(bio->bi_opf & REQ_PREFLUSH)
596 && md_flush_request(mddev, bio))
599 if (unlikely((bio_op(bio) == REQ_OP_DISCARD))) {
600 raid0_handle_discard(mddev, bio);
604 sector = bio->bi_iter.bi_sector;
612 if (sectors < bio_sectors(bio)) {
613 struct bio *split = bio_split(bio, sectors, GFP_NOIO,
615 bio_chain(split, bio);
616 raid0_map_submit_bio(mddev, bio);
617 bio = split;
620 raid0_map_submit_bio(mddev, bio);