ddf: exclude failed devices from container_content
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>
This commit is contained in:
parent
c870b7dda3
commit
fa033beca9
|
@ -2974,18 +2974,23 @@ static struct mdinfo *container_content_ddf(struct supertype *st)
|
|||
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));
|
||||
|
|
Loading…
Reference in New Issue