On 9/1/25 12:32 PM, Yu Kuai wrote: > From: Yu Kuai <yukuai3@xxxxxxxxxx> > > Unify bio split code, and prepare to fix disordered split IO. > > Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx> [...] > @@ -1586,18 +1577,13 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio, > max_sectors = min_t(int, max_sectors, > BIO_MAX_VECS * (PAGE_SIZE >> 9)); > if (max_sectors < bio_sectors(bio)) { > - struct bio *split = bio_split(bio, max_sectors, > - GFP_NOIO, &conf->bio_split); > - > - if (IS_ERR(split)) { > - error = PTR_ERR(split); > + bio = bio_submit_split_bioset(bio, max_sectors, > + &conf->bio_split); > + if (!bio) { > + set_bit(R1BIO_Returned, &r1_bio->state); Before it was "set_bit(R1BIO_Uptodate, &r1_bio->state);" that was done. Now it is R1BIO_Returned that is set. The commit message does not mention this change at all. Is this a bug fix ? If yes, that should be in a pre patch before the conversion to using bio_submit_split_bioset(). > goto err_handle; > } > > - bio_chain(split, bio); > - trace_block_split(split, bio->bi_iter.bi_sector); > - submit_bio_noacct(bio); > - bio = split; > r1_bio->master_bio = bio; > r1_bio->sectors = max_sectors; > } > @@ -1687,8 +1673,6 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio, > } > } > > - bio->bi_status = errno_to_blk_status(error); > - set_bit(R1BIO_Uptodate, &r1_bio->state); > raid_end_bio_io(r1_bio); > } -- Damien Le Moal Western Digital Research