If a device is failed, then don't include it in the reported
container_content, else it might get included in the array.
Reported-by: Albert Pauw <albert.pauw@gmail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
for (i = 0 ; i < ddf->mppe ; i++) {
struct mdinfo *dev;
struct dl *d;
+ int stt;
if (vc->conf.phys_refnum[i] == 0xFFFFFFFF)
continue;
- this->array.working_disks++;
-
for (d = ddf->dlist; d ; d=d->next)
if (d->disk.refnum == vc->conf.phys_refnum[i])
break;
if (d == NULL)
/* Haven't found that one yet, maybe there are others */
continue;
+ stt = __be16_to_cpu(ddf->phys->entries[d->pdnum].state);
+ if ((stt & (DDF_Online|DDF_Failed|DDF_Rebuilding))
+ != DDF_Online)
+ continue;
+
+ this->array.working_disks++;
dev = malloc(sizeof(*dev));
memset(dev, 0, sizeof(*dev));