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:
NeilBrown 2011-03-03 09:04:42 +11:00
parent c870b7dda3
commit fa033beca9
1 changed files with 7 additions and 2 deletions

View File

@ -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));