Lines Matching refs:raid_bio
5500 static int raid5_read_one_chunk(struct mddev *mddev, struct bio *raid_bio)
5509 if (!in_chunk_boundary(mddev, raid_bio)) {
5514 sector = raid5_compute_sector(conf, raid_bio->bi_iter.bi_sector, 0,
5516 end_sector = sector + bio_sectors(raid_bio);
5537 if (is_badblock(rdev, sector, bio_sectors(raid_bio), &first_bad,
5543 md_account_bio(mddev, &raid_bio);
5544 raid_bio->bi_next = (void *)rdev;
5546 align_bio = bio_alloc_clone(rdev->bdev, raid_bio, GFP_NOIO,
5549 align_bio->bi_private = raid_bio;
5576 raid_bio->bi_iter.bi_sector);
5585 static struct bio *chunk_aligned_read(struct mddev *mddev, struct bio *raid_bio)
5588 sector_t sector = raid_bio->bi_iter.bi_sector;
5592 if (sectors < bio_sectors(raid_bio)) {
5594 split = bio_split(raid_bio, sectors, GFP_NOIO, &conf->bio_split);
5595 bio_chain(split, raid_bio);
5596 submit_bio_noacct(raid_bio);
5597 raid_bio = split;
5600 if (!raid5_read_one_chunk(mddev, raid_bio))
5601 return raid_bio;
6627 static int retry_aligned_read(struct r5conf *conf, struct bio *raid_bio,
6637 * We *know* that this entire raid_bio is in one chunk, so
6646 logical_sector = raid_bio->bi_iter.bi_sector &
6650 last_sector = bio_end_sector(raid_bio);
6665 conf->retry_read_aligned = raid_bio;
6670 if (!add_stripe_bio(sh, raid_bio, dd_idx, 0, 0)) {
6672 conf->retry_read_aligned = raid_bio;
6683 bio_endio(raid_bio);