md: handle writes to broken raid10 arrays gracefully
When writing to a broken array, raid10 currently happily emits empty bio lists. IOW, the master bio will never be completed, sending writers to UNINTERRUPTIBLE_SLEEP forever. Signed-off-by: Arne Redlich <agr@powerkom-dd.de> Acked-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
68a0460bbc
commit
1eb3465255
@@ -917,6 +917,13 @@ static int make_request(request_queue_t *q, struct bio * bio)
|
||||
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);
|
||||
spin_lock_irqsave(&conf->device_lock, flags);
|
||||
bio_list_merge(&conf->pending_bio_list, &bl);
|
||||
|
||||
Reference in New Issue
Block a user