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> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
14e713446a
commit
f6f953aa99
1 changed files with 7 additions and 0 deletions
|
@ -917,6 +917,13 @@ static int make_request(struct request_queue *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);
|
||||
|
|
Loading…
Reference in a new issue