Assemble: fix assembly in the delta_disks > max_degraded case

Incremental assembly works on such an array because the kernel sees the
disk as in-sync and that the array is reshaping.  Teach Assemble() the
same assumptions.

This is only needed on kernels that do not initialize ->recovery_offset
when activating spares for reshape.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Dan Williams 2010-11-18 10:22:01 +01:00 committed by NeilBrown
parent 4411fb1749
commit dcc4210f58
1 changed files with 3 additions and 1 deletions

View File

@ -868,7 +868,9 @@ int Assemble(struct supertype *st, char *mddev,
devices[most_recent].i.events) {
devices[j].uptodate = 1;
if (i < content->array.raid_disks) {
if (devices[j].i.recovery_start == MaxSector) {
if (devices[j].i.recovery_start == MaxSector ||
(content->reshape_active &&
j >= content->array.raid_disks - content->delta_disks)) {
okcnt++;
avail[i]=1;
} else