]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - super-intel.c
Remove getinfo_super_n and do some other cleaning up.
[thirdparty/mdadm.git] / super-intel.c
index 68674e5c0c6b82a79fae944625d99425a609b8c4..dee107cd65d2721e8db37d82c33bd423b58274b6 100644 (file)
@@ -124,6 +124,8 @@ static unsigned int mpb_sectors(struct imsm_super *mpb)
        return sector_count(__le32_to_cpu(mpb->mpb_size));
 }
 
+static struct superswitch super_imsm_volume;
+
 /* internal representation of IMSM metadata */
 struct intel_super {
        union {
@@ -449,6 +451,7 @@ static void uuid_from_super_imsm(struct supertype *st, int uuid[4])
        printf("%s\n", __FUNCTION__);
 }
 
+#if 0
 static void
 get_imsm_numerical_version(struct imsm_super *mpb, int *m, int *p)
 {
@@ -474,6 +477,7 @@ 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)
 {
@@ -495,11 +499,9 @@ static void getinfo_super_imsm(struct supertype *st, struct mdinfo *info)
        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;
@@ -516,6 +518,11 @@ static void getinfo_super_imsm(struct supertype *st, struct mdinfo *info)
        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;
@@ -534,9 +541,6 @@ static void getinfo_super_imsm_volume(struct supertype *st, struct mdinfo *info)
        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);
@@ -978,6 +982,10 @@ static int load_super_imsm_all(struct supertype *st, int fd, void **sbp,
                        close(dfd);
        }
 
+       if (st->subarray[0]) {
+               /* FIXME */
+       }
+
        *sbp = super;
        if (st->ss == NULL) {
                st->ss = &super_imsm_container;
@@ -999,6 +1007,8 @@ static int load_super_imsm(struct supertype *st, int fd, char *devname)
        if (load_super_imsm_all(st, fd, &st->sb, devname, 1) == 0)
                return 0;
 #endif
+       if (st->subarray[0])
+               return 1; /* FIXME */
 
        super = alloc_super(0);
        if (!super) {
@@ -1282,38 +1292,9 @@ static int store_zero_imsm(struct supertype *st, int fd)
        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)
@@ -1564,9 +1545,6 @@ static struct mdinfo *container_content_imsm(struct supertype *st)
                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);
@@ -1870,10 +1848,8 @@ struct superswitch super_imsm = {
        .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 */
@@ -1894,7 +1870,6 @@ struct superswitch super_imsm_container = {
        .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
@@ -1908,16 +1883,14 @@ struct superswitch super_imsm_container = {
 
        .container_content = container_content_imsm,
 
-       .swapuuid       = 0,
        .external       = 1,
 };
 
-struct superswitch super_imsm_volume = {
+static struct superswitch super_imsm_volume = {
        .update_super   = update_super_imsm,
        .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,
@@ -1926,6 +1899,5 @@ struct superswitch super_imsm_volume = {
 
 
        .validate_geometry = validate_geometry_imsm_volume,
-       .swapuuid       = 0,
        .external       = 2,
 };