]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - super-intel.c
ddf: store homehost information to allow smooth assembly.
[thirdparty/mdadm.git] / super-intel.c
index c300503c30a1b2fb895adc5020ed32edccded03a..34dfb8f5da3c9f2c5b2e8fc415ecf1ac47f758b8 100644 (file)
@@ -213,17 +213,6 @@ struct imsm_update_add_disk {
        enum imsm_update_type type;
 };
 
-static int imsm_env_devname_as_serial(void)
-{
-       char *val = getenv("IMSM_DEVNAME_AS_SERIAL");
-
-       if (val && atoi(val) == 1)
-               return 1;
-
-       return 0;
-}
-
-
 static struct supertype *match_metadata_desc_imsm(char *arg)
 {
        struct supertype *st;
@@ -493,9 +482,7 @@ static __u32 imsm_reserved_sectors(struct intel_super *super, struct dl *dl)
 }
 
 #ifndef MDASSEMBLE
-static void getinfo_super_imsm(struct supertype *st, struct mdinfo *info);
-
-static void print_imsm_dev(struct imsm_dev *dev, int index)
+static void print_imsm_dev(struct imsm_dev *dev, char *uuid, int disk_idx)
 {
        __u64 sz;
        int slot;
@@ -504,10 +491,11 @@ static void print_imsm_dev(struct imsm_dev *dev, int index)
 
        printf("\n");
        printf("[%.16s]:\n", dev->volume);
+       printf("           UUID : %s\n", uuid);
        printf("     RAID Level : %d\n", get_imsm_raid_level(map));
        printf("        Members : %d\n", map->num_members);
        for (slot = 0; slot < map->num_members; slot++)
-               if (index == get_imsm_disk_idx(dev, slot))
+               if (disk_idx== get_imsm_disk_idx(dev, slot))
                        break;
        if (slot < map->num_members) {
                ord = get_imsm_ord_tbl_ent(dev, slot);
@@ -567,6 +555,8 @@ static void print_imsm_disk(struct imsm_super *mpb, int index, __u32 reserved)
               human_size(sz * 512));
 }
 
+static void getinfo_super_imsm(struct supertype *st, struct mdinfo *info);
+
 static void examine_super_imsm(struct supertype *st, char *homehost)
 {
        struct intel_super *super = st->sb;
@@ -606,8 +596,15 @@ static void examine_super_imsm(struct supertype *st, char *homehost)
                printf("   Spare Blocks : %d\n",  __le32_to_cpu(log->reserved_spare_block_count));
                printf("    First Spare : %llx\n", __le64_to_cpu(log->first_spare_lba));
        }
-       for (i = 0; i < mpb->num_raid_devs; i++)
-               print_imsm_dev(__get_imsm_dev(mpb, i), super->disks->index);
+       for (i = 0; i < mpb->num_raid_devs; i++) {
+               struct mdinfo info;
+               struct imsm_dev *dev = __get_imsm_dev(mpb, i);
+
+               super->current_vol = i;
+               getinfo_super_imsm(st, &info);
+               fname_from_uuid(st, &info, nbuf, '-');
+               print_imsm_dev(dev, nbuf + 5, super->disks->index);
+       }
        for (i = 0; i < mpb->num_disks; i++) {
                if (i == super->disks->index)
                        continue;
@@ -615,13 +612,12 @@ static void examine_super_imsm(struct supertype *st, char *homehost)
        }
 }
 
-static void getinfo_super_imsm(struct supertype *st, struct mdinfo *info);
-
 static void brief_examine_super_imsm(struct supertype *st)
 {
        /* We just write a generic IMSM ARRAY entry */
        struct mdinfo info;
        char nbuf[64];
+       char nbuf1[64];
        struct intel_super *super = st->sb;
        int i;
 
@@ -630,21 +626,27 @@ static void brief_examine_super_imsm(struct supertype *st)
 
        getinfo_super_imsm(st, &info);
        fname_from_uuid(st, &info, nbuf,'-');
-       printf("ARRAY /dev/imsm metadata=imsm auto=md UUID=%s\n", nbuf + 5);
+       printf("ARRAY metadata=imsm auto=md UUID=%s\n", nbuf + 5);
        for (i = 0; i < super->anchor->num_raid_devs; i++) {
                struct imsm_dev *dev = get_imsm_dev(super, i);
 
                super->current_vol = i;
                getinfo_super_imsm(st, &info);
-               fname_from_uuid(st, &info, nbuf,'-');
-               printf("ARRAY /dev/md/%.16s container=/dev/imsm member=%d auto=mdp UUID=%s\n",
-                      dev->volume, i, nbuf + 5);
+               fname_from_uuid(st, &info, nbuf1,'-');
+               printf("ARRAY /dev/md/%.16s container=%s\n"
+                      "   member=%d auto=mdp UUID=%s\n",
+                      dev->volume, nbuf + 5, i, nbuf1 + 5);
        }
 }
 
 static void detail_super_imsm(struct supertype *st, char *homehost)
 {
-       printf("%s\n", __FUNCTION__);
+       struct mdinfo info;
+       char nbuf[64];
+
+       getinfo_super_imsm(st, &info);
+       fname_from_uuid(st, &info, nbuf,'-');
+       printf("\n           UUID : %s\n", nbuf + 5);
 }
 
 static void brief_detail_super_imsm(struct supertype *st)
@@ -1017,7 +1019,7 @@ static int imsm_read_serial(int fd, char *devname,
 
        rv = scsi_get_serial(fd, scsi_serial, sizeof(scsi_serial));
 
-       if (rv && imsm_env_devname_as_serial()) {
+       if (rv && check_env("IMSM_DEVNAME_AS_SERIAL")) {
                memset(serial, 0, MAX_RAID_SERIAL_LEN);
                fd2devname(fd, (char *) serial);
                return 0;