summaryrefslogtreecommitdiff
path: root/super-intel.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2011-06-09 12:42:02 +1000
committerNeilBrown <neilb@suse.de>2011-06-09 12:42:02 +1000
commit9894ec0d64a9faab719d016bbbf5fbc842757df6 (patch)
treee448a792b28ad6c9828b546e3db2f31d542092c5 /super-intel.c
parent6820c9ab02c77bb3d61c01d3064df1ae9b6883a1 (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.c8
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;