char *dev = st->devname;
int fd;
int i;
+ int remaining_disks;
+ int last_disk;
if (test)
alert("TestMessage", dev, NULL, ainfo);
}
st->percent = mse->percent;
- for (i=0; i<MaxDisks && i <= array.raid_disks + array.nr_disks;
+ remaining_disks = array.nr_disks;
+ for (i=0; i<MaxDisks && remaining_disks > 0;
i++) {
mdu_disk_info_t disc;
disc.number = i;
info[i].state = disc.state;
info[i].major = disc.major;
info[i].minor = disc.minor;
+ if (disc.major || disc.minor)
+ remaining_disks --;
} else
info[i].major = info[i].minor = 0;
}
+ last_disk = i;
if (mse->metadata_version &&
strncmp(mse->metadata_version, "external:", 9) == 0 &&
int change;
char *dv = NULL;
disc.number = i;
- if (i > array.raid_disks + array.nr_disks) {
+ if (i >= last_disk) {
newstate = 0;
disc.major = disc.minor = 0;
} else if (info[i].major || info[i].minor) {