ddf: set vcnum correctly when creating a new virtual device in conflist

We weren't setting ->vcnum at all when an array was added.  This
meant that a subsequent device failure could be assigned to the
wrong array.

Reported-by: Albert Pauw <albert.pauw@gmail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2011-03-14 18:47:47 +11:00
parent e1316fab98
commit 1502a43a08
1 changed files with 8 additions and 0 deletions

View File

@ -3417,6 +3417,14 @@ static void ddf_process_update(struct supertype *st,
memcpy(&vcl->conf, vc, update->len);
vcl->lba_offset = (__u64*)
&vcl->conf.phys_refnum[mppe];
for (ent = 0;
ent < __be16_to_cpu(ddf->virt->populated_vdes);
ent++)
if (memcmp(vc->guid, ddf->virt->entries[ent].guid,
DDF_GUID_LEN) == 0) {
vcl->vcnum = ent;
break;
}
ddf->conflist = vcl;
}
/* Now make sure vlist is correct for each dl. */