imsm: fix num_domains
authorDan Williams <dan.j.williams@intel.com>
Mon, 18 May 2009 16:58:55 +0000 (09:58 -0700)
committerDan Williams <dan.j.williams@intel.com>
Mon, 18 May 2009 16:58:55 +0000 (09:58 -0700)
The 'num_domains' field simply identifies the number of mirrors.  So it
is 2 for a 2-disk raid1 or a 4-disk raid10.  The orom does not currently
support more than 2 mirrors, but a three disk raid1 for example would
increase num_domains to 3.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
super-intel.c

index d7383fb..35c43f4 100644 (file)
@@ -2405,13 +2405,16 @@ static int init_super_imsm_volume(struct supertype *st, mdu_array_info_t *info,
                                "in a raid1 volume\n");
                return 0;
        }
                                "in a raid1 volume\n");
                return 0;
        }
+
+       map->raid_level = info->level;
        if (info->level == 10) {
                map->raid_level = 1;
                map->num_domains = info->raid_disks / 2;
        if (info->level == 10) {
                map->raid_level = 1;
                map->num_domains = info->raid_disks / 2;
-       } else {
-               map->raid_level = info->level;
+       } else if (info->level == 1)
+               map->num_domains = info->raid_disks;
+       else
                map->num_domains = 1;
                map->num_domains = 1;
-       }
+
        num_data_stripes = info_to_num_data_stripes(info, map->num_domains);
        map->num_data_stripes = __cpu_to_le32(num_data_stripes);
 
        num_data_stripes = info_to_num_data_stripes(info, map->num_domains);
        map->num_data_stripes = __cpu_to_le32(num_data_stripes);