Commit 6529d41d authored by Yu Kuai's avatar Yu Kuai Committed by Jens Axboe
Browse files

md/md-linear: convert to use bio_submit_split_bioset()



Unify bio split code, prepare to fix reordered split IO.

Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 9e8a5b37
Loading
Loading
Loading
Loading
+3 −12
Original line number Diff line number Diff line
@@ -256,21 +256,12 @@ static bool linear_make_request(struct mddev *mddev, struct bio *bio)

	if (unlikely(bio_end_sector(bio) > end_sector)) {
		/* This bio crosses a device boundary, so we have to split it */
		struct bio *split = bio_split(bio, end_sector - bio_sector,
					      GFP_NOIO, &mddev->bio_set);

		if (IS_ERR(split)) {
			bio->bi_status = errno_to_blk_status(PTR_ERR(split));
			bio_endio(bio);
		bio = bio_submit_split_bioset(bio, end_sector - bio_sector,
					      &mddev->bio_set);
		if (!bio)
			return true;
	}

		bio_chain(split, bio);
		trace_block_split(split, bio->bi_iter.bi_sector);
		submit_bio_noacct(bio);
		bio = split;
	}

	md_account_bio(mddev, &bio);
	bio_set_dev(bio, tmp_dev->rdev->bdev);
	bio->bi_iter.bi_sector = bio->bi_iter.bi_sector -