diff options
author | NeilBrown <neilb@suse.de> | 2005-09-09 19:24:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-09 19:39:15 -0400 |
commit | 87fc767b832ef5a681a0ff9d203c3289bc3be2bf (patch) | |
tree | 141e59c5ab978675339b34e6ddb8fe0b39156853 | |
parent | 6d508242b231cb6e6803faaef54456abe846edb8 (diff) |
[PATCH] md: fix BUG when raid10 rebuilds without enough drives
This shouldn't be a BUG. We should cope.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/md/raid10.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 834bf0f86222..5bd1e9ec899d 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
@@ -1474,7 +1474,13 @@ static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, i | |||
1474 | } | 1474 | } |
1475 | } | 1475 | } |
1476 | if (j == conf->copies) { | 1476 | if (j == conf->copies) { |
1477 | BUG(); | 1477 | /* Cannot recover, so abort the recovery */ |
1478 | put_buf(r10_bio); | ||
1479 | r10_bio = rb2; | ||
1480 | if (!test_and_set_bit(MD_RECOVERY_ERR, &mddev->recovery)) | ||
1481 | printk(KERN_INFO "raid10: %s: insufficient working devices for recovery.\n", | ||
1482 | mdname(mddev)); | ||
1483 | break; | ||
1478 | } | 1484 | } |
1479 | } | 1485 | } |
1480 | if (biolist == NULL) { | 1486 | if (biolist == NULL) { |