|
@@ -917,6 +917,13 @@ static int make_request(struct request_queue *q, struct bio * bio)
|
|
bio_list_add(&bl, mbio);
|
|
bio_list_add(&bl, mbio);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (unlikely(!atomic_read(&r10_bio->remaining))) {
|
|
|
|
+ /* the array is dead */
|
|
|
|
+ md_write_end(mddev);
|
|
|
|
+ raid_end_bio_io(r10_bio);
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
bitmap_startwrite(mddev->bitmap, bio->bi_sector, r10_bio->sectors, 0);
|
|
bitmap_startwrite(mddev->bitmap, bio->bi_sector, r10_bio->sectors, 0);
|
|
spin_lock_irqsave(&conf->device_lock, flags);
|
|
spin_lock_irqsave(&conf->device_lock, flags);
|
|
bio_list_merge(&conf->pending_bio_list, &bl);
|
|
bio_list_merge(&conf->pending_bio_list, &bl);
|