summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2006-05-19 07:19:04 +0000
committerNeil Brown <neilb@suse.de>2006-05-19 07:19:04 +0000
commita1cbd7d053e034bbfcf337bc9ee7b92ec4c6f6c0 (patch)
tree96ccd12c23643ef4ba48ab6c8768cf7ce75628e6
parentb6750aa8da57bfc0eb3a3bdc47c289638b1022c8 (diff)
downloadmdadm-a1cbd7d053e034bbfcf337bc9ee7b92ec4c6f6c0.tar.gz
mdadm-a1cbd7d053e034bbfcf337bc9ee7b92ec4c6f6c0.tar.xz
mdadm-a1cbd7d053e034bbfcf337bc9ee7b92ec4c6f6c0.zip
Include homehost information in --examine as appropriate
Signed-off-by: Neil Brown <neilb@suse.de>
-rw-r--r--Examine.c6
-rw-r--r--mdadm.c2
-rw-r--r--mdadm.h4
-rw-r--r--super0.c16
-rw-r--r--super1.c11
5 files changed, 27 insertions, 12 deletions
diff --git a/Examine.c b/Examine.c
index b5a6f13..16b1b9b 100644
--- 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 de0a503..dc3e282 100644
--- 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 2a2529f..25c8b8f 100644
--- 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,
diff --git a/super0.c b/super0.c
index d1fbfae..dbf59c8 100644
--- 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;
diff --git a/super1.c b/super1.c
index 77118d4..b1ea298 100644
--- 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));