printf("%s\n", __FUNCTION__);
}
+#if 0
static void
get_imsm_numerical_version(struct imsm_super *mpb, int *m, int *p)
{
*m = strtol(minor, NULL, 0);
*p = strtol(patch, NULL, 0);
}
+#endif
static int imsm_level_to_layout(int level)
{
struct intel_super *super = st->sb;
struct imsm_super *mpb = super->mpb;
struct imsm_disk *disk;
+ int sect = mpb_sectors(mpb);
__u32 s;
- info->array.major_version = 2000;
- get_imsm_numerical_version(mpb, &info->array.minor_version,
- &info->array.patch_version);
info->array.raid_disks = mpb->num_disks;
info->array.level = LEVEL_CONTAINER;
info->array.layout = 0;
info->disk.number = -1;
info->disk.state = 0;
+ info->data_offset = __le32_to_cpu(get_imsm_disk(super->mpb,
+ super->disks->index)
+ ->total_blocks) - (2 + sect - 1);
+ info->component_size = sect;
+
if (super->disks) {
info->disk.number = super->disks->index;
info->disk.raid_disk = super->disks->index;
struct imsm_dev *dev = get_imsm_dev(mpb, info->container_member);
struct imsm_map *map = &dev->vol.map[0];
- info->array.major_version = 2000;
- get_imsm_numerical_version(mpb, &info->array.minor_version,
- &info->array.patch_version);
info->array.raid_disks = map->num_members;
info->array.level = get_imsm_raid_level(map);
info->array.layout = imsm_level_to_layout(info->array.level);
memset(buf, 0, sizeof(buf));
if (write(fd, buf, sizeof(buf)) != sizeof(buf))
return 1;
-
return 0;
}
-static void getinfo_super_n_imsm_container(struct supertype *st, struct mdinfo *info)
-{
- /* just need offset and size...
- * of the metadata
- */
- struct intel_super *super = st->sb;
- struct imsm_super *mpb = super->mpb;
- struct imsm_disk *disk = get_imsm_disk(mpb, info->disk.number);
-
- info->data_offset = __le32_to_cpu(disk->total_blocks) -
- (MPB_SECTOR_CNT + IMSM_RESERVED_SECTORS);
- info->component_size = MPB_SECTOR_CNT + IMSM_RESERVED_SECTORS;
-}
-
-static void getinfo_super_n_imsm_volume(struct supertype *st, struct mdinfo *info)
-{
- /* Find the particular details for info->disk.raid_disk.
- * This includes data_offset, component_size,
- */
- struct intel_super *super = st->sb;
- struct imsm_super *mpb = super->mpb;
- struct imsm_dev *dev = get_imsm_dev(mpb, super->creating_dev);
- struct imsm_map *map = &dev->vol.map[0];
-
- info->data_offset = __le32_to_cpu(map->pba_of_lba0);
- info->component_size = __le32_to_cpu(map->blocks_per_member);
-}
-
static int validate_geometry_imsm(struct supertype *st, int level, int layout,
int raiddisks, int chunk, unsigned long long size,
char *dev, unsigned long long *freesize)
this->next = rest;
rest = this;
- this->array.major_version = 2000;
- get_imsm_numerical_version(mpb, &this->array.minor_version,
- &this->array.patch_version);
this->array.level = get_imsm_raid_level(map);
this->array.raid_disks = map->num_members;
this->array.layout = imsm_level_to_layout(this->array.level);
.store_super = store_zero_imsm,
.free_super = free_super_imsm,
.match_metadata_desc = match_metadata_desc_imsm,
- .getinfo_super_n = getinfo_super_n_imsm_container,
.validate_geometry = validate_geometry_imsm,
- .swapuuid = 0,
.external = 1,
/* for mdmon */
.add_to_super = add_to_super_imsm,
.write_init_super = write_init_super_imsm,
.getinfo_super = getinfo_super_imsm,
- .getinfo_super_n = getinfo_super_n_imsm_container,
.load_super = load_super_imsm,
#ifndef MDASSEMBLE
.container_content = container_content_imsm,
- .swapuuid = 0,
.external = 1,
};
.init_super = init_super_imsm_volume,
.add_to_super = add_to_super_imsm_volume,
.getinfo_super = getinfo_super_imsm_volume,
- .getinfo_super_n = getinfo_super_n_imsm_volume,
.write_init_super = write_init_super_imsm,
.load_super = load_super_imsm,
.validate_geometry = validate_geometry_imsm_volume,
- .swapuuid = 0,
.external = 2,
};