]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Include homehost information in --examine as appropriate
authorNeil Brown <neilb@suse.de>
Fri, 19 May 2006 07:19:04 +0000 (07:19 +0000)
committerNeil Brown <neilb@suse.de>
Fri, 19 May 2006 07:19:04 +0000 (07:19 +0000)
Signed-off-by: Neil Brown <neilb@suse.de>
Examine.c
mdadm.c
mdadm.h
super0.c
super1.c

index b5a6f13db1f235c6caa96c30adbe22f44db21ce5..16b1b9ba5ae241dfdfb59fbd15e0f1095092a808 100644 (file)
--- a/Examine.c
+++ b/Examine.c
@@ -35,7 +35,9 @@
 #endif
 #include       "md_u.h"
 #include       "md_p.h"
-int Examine(mddev_dev_t devlist, int brief, int scan, int SparcAdjust, struct supertype *forcest)
+int Examine(mddev_dev_t devlist, int brief, int scan,
+           int SparcAdjust, struct supertype *forcest,
+           char *homehost)
 {
 
        /* Read the raid superblock from a device and
@@ -124,7 +126,7 @@ int Examine(mddev_dev_t devlist, int brief, int scan, int SparcAdjust, struct su
                        dl_add(ap->devs, d);
                } else {
                        printf("%s:\n",devlist->devname);
-                       st->ss->examine_super(super);
+                       st->ss->examine_super(super, homehost);
                        free(super);
                }
        }
diff --git a/mdadm.c b/mdadm.c
index de0a503e316c58f3558f9dc42fc82b85dfc9903d..dc3e282a6707038b6ec5447725ac4f5c2f5e11a0 100644 (file)
--- a/mdadm.c
+++ b/mdadm.c
@@ -1054,7 +1054,7 @@ int main(int argc, char *argv[])
                                fprintf(stderr, Name ": No devices listed in %s\n", configfile?configfile:DefaultConfFile);
                                exit(1);
                        }
-                       rv = Examine(devlist, scan?(verbose>1?0:verbose+1):brief, scan, SparcAdjust, ss);
+                       rv = Examine(devlist, scan?(verbose>1?0:verbose+1):brief, scan, SparcAdjust, ss, homehost);
                } else {
                        if (devlist == NULL) {
                                if (devmode=='D' && scan) {
diff --git a/mdadm.h b/mdadm.h
index 2a2529f3dce1a8de3a59da23e6a10a9b0985aeaf..25c8b8f4ac06c7dae3d2c0949e15cf98f3007aa8 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -272,7 +272,7 @@ extern char *map_dev(int major, int minor, int create);
 
 
 extern struct superswitch {
-       void (*examine_super)(void *sbv);
+       void (*examine_super)(void *sbv, char *homehost);
        void (*brief_examine_super)(void *sbv);
        void (*detail_super)(void *sbv, char *homehost);
        void (*brief_detail_super)(void *sbv);
@@ -361,7 +361,7 @@ extern int Create(struct supertype *st, char *mddev, int mdfd,
 extern int Detail(char *dev, int brief, int test, char *homehost);
 extern int Query(char *dev);
 extern int Examine(mddev_dev_t devlist, int brief, int scan, int SparcAdjust,
-                  struct supertype *forcest);
+                  struct supertype *forcest, char *homehost);
 extern int Monitor(mddev_dev_t devlist,
                   char *mailaddr, char *alert_cmd,
                   int period, int daemonise, int scan, int oneshot,
index d1fbfaeee5c9970f5dba82500d2869bb486b46d9..dbf59c8457819ec3bdc5ac74bcca110a06ba1342 100644 (file)
--- a/super0.c
+++ b/super0.c
@@ -84,7 +84,7 @@ void super0_swap_endian(struct mdp_superblock_s *sb)
 
 #ifndef MDASSEMBLE
 
-static void examine_super0(void *sbv)
+static void examine_super0(void *sbv, char *homehost)
 {
        mdp_super_t *sb = sbv;
        time_t atime;
@@ -94,10 +94,18 @@ static void examine_super0(void *sbv)
        printf("          Magic : %08x\n", sb->md_magic);
        printf("        Version : %02d.%02d.%02d\n", sb->major_version, sb->minor_version,
               sb->patch_version);
-       if (sb->minor_version >= 90)
-               printf("           UUID : %08x:%08x:%08x:%08x\n", sb->set_uuid0, sb->set_uuid1,
+       if (sb->minor_version >= 90) {
+               printf("           UUID : %08x:%08x:%08x:%08x", sb->set_uuid0, sb->set_uuid1,
                       sb->set_uuid2, sb->set_uuid3);
-       else
+               if (homehost) {
+                       unsigned char *hash = SHA1((unsigned char *)homehost,
+                                                  strlen(homehost),
+                                                  NULL);
+                       if (memcmp(&sb->set_uuid2, hash, 8)==0)
+                               printf(" (local to host %s)", homehost);
+               }
+               printf("\n");
+       } else
                printf("           UUID : %08x\n", sb->set_uuid0);
 
        atime = sb->ctime;
index 77118d42b1eee581667764324ef86cfd32b539ad..b1ea298fb7f120405b0c5e0aeb8d65cab0f0e94a 100644 (file)
--- a/super1.c
+++ b/super1.c
@@ -136,7 +136,7 @@ static unsigned int calc_sb_1_csum(struct mdp_superblock_1 * sb)
 }
 
 #ifndef MDASSEMBLE
-static void examine_super1(void *sbv)
+static void examine_super1(void *sbv, char *homehost)
 {
        struct mdp_superblock_1 *sb = sbv;
        time_t atime;
@@ -144,6 +144,7 @@ static void examine_super1(void *sbv)
        int faulty;
        int i;
        char *c;
+       int l = homehost ? strlen(homehost) : 0;
 
        printf("          Magic : %08x\n", __le32_to_cpu(sb->magic));
        printf("        Version : %02d\n", 1);
@@ -154,8 +155,12 @@ static void examine_super1(void *sbv)
                printf("%02x", sb->set_uuid[i]);
        }
        printf("\n");
-       printf("           Name : %.32s\n", sb->set_name);
-
+       printf("           Name : %.32s", sb->set_name);
+       if (l > 0 && l < 32 &&
+           sb->set_name[l] == ':' &&
+           strncmp(sb->set_name, homehost, l) == 0)
+               printf("  (local to host %s)", homehost);
+       printf("\n");
        atime = __le64_to_cpu(sb->ctime) & 0xFFFFFFFFFFULL;
        printf("  Creation Time : %.24s\n", ctime(&atime));
        c=map_num(pers, __le32_to_cpu(sb->level));