diff options
author | NeilBrown <neilb@suse.de> | 2011-06-09 12:42:02 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-06-09 12:42:02 +1000 |
commit | 9894ec0d64a9faab719d016bbbf5fbc842757df6 (patch) | |
tree | e448a792b28ad6c9828b546e3db2f31d542092c5 /super-intel.c | |
parent | 6820c9ab02c77bb3d61c01d3064df1ae9b6883a1 (diff) |
Fix some fall-out from recent memset-zero for getinfo_super
container_content_imsm was setting info->next before calling
getinfo_super_imsm_container which now zeros everything.
So move that assignment to afterwards.
So both imsm and ddf were assuming info->disk.raid_disk means
something but it doesn't. So fix those.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'super-intel.c')
-rw-r--r-- | super-intel.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/super-intel.c b/super-intel.c index b8d8b4eb..6fed9eb9 100644 --- a/super-intel.c +++ b/super-intel.c @@ -2079,9 +2079,8 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info, if (prev_map) map_to_analyse = prev_map; - for (dl = super->disks; dl; dl = dl->next) - if (dl->raiddisk == info->disk.raid_disk) - break; + dl = super->disks; + info->container_member = super->current_vol; info->array.raid_disks = map->num_members; info->array.level = get_imsm_raid_level(map_to_analyse); @@ -5446,11 +5445,10 @@ static struct mdinfo *container_content_imsm(struct supertype *st, char *subarra sizeof(*this)); break; } - memset(this, 0, sizeof(*this)); - this->next = rest; super->current_vol = i; getinfo_super_imsm_volume(st, this, NULL); + this->next = rest; for (slot = 0 ; slot < map->num_members; slot++) { unsigned long long recovery_start; struct mdinfo *info_d; |