add --export option to --examine
From: Kay Sievers <kay.sievers@vrfy.org> Cc: David Zeuthen <david@fubar.dk> Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
This commit is contained in:
parent
9a02c62af9
commit
0d726f17e1
2
Detail.c
2
Detail.c
|
@ -142,7 +142,7 @@ int Detail(char *dev, int brief, int export, int test, char *homehost)
|
|||
array.major_version, array.minor_version);
|
||||
|
||||
if (st && st->sb)
|
||||
st->ss->export_super(st);
|
||||
st->ss->export_detail_super(st);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#endif
|
||||
#include "md_u.h"
|
||||
#include "md_p.h"
|
||||
int Examine(mddev_dev_t devlist, int brief, int scan,
|
||||
int Examine(mddev_dev_t devlist, int brief, int export, int scan,
|
||||
int SparcAdjust, struct supertype *forcest,
|
||||
char *homehost)
|
||||
{
|
||||
|
@ -102,6 +102,7 @@ int Examine(mddev_dev_t devlist, int brief, int scan,
|
|||
st->ss->update_super(st, NULL, "sparc2.2",
|
||||
devlist->devname, 0, 0, NULL);
|
||||
/* Ok, its good enough to try, though the checksum could be wrong */
|
||||
|
||||
if (brief) {
|
||||
struct array *ap;
|
||||
char *d;
|
||||
|
@ -126,6 +127,8 @@ int Examine(mddev_dev_t devlist, int brief, int scan,
|
|||
ap->spares++;
|
||||
d = dl_strdup(devlist->devname);
|
||||
dl_add(ap->devs, d);
|
||||
} else if (export) {
|
||||
st->ss->export_examine_super(st);
|
||||
} else {
|
||||
printf("%s:\n",devlist->devname);
|
||||
st->ss->examine_super(st, homehost);
|
||||
|
|
4
mdadm.8
4
mdadm.8
|
@ -946,7 +946,9 @@ Print detail of one or more md devices.
|
|||
.TP
|
||||
.BR \-Y ", " \-\-export
|
||||
When used with
|
||||
.BR \-\-detail ,
|
||||
.B \-\-detail
|
||||
or
|
||||
.BR \-\-examine ,
|
||||
output will be formatted as
|
||||
.B key=value
|
||||
pairs for easy import into the environment.
|
||||
|
|
4
mdadm.c
4
mdadm.c
|
@ -1202,7 +1202,9 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
if (brief && verbose)
|
||||
brief = 2;
|
||||
rv = Examine(devlist, scan?(verbose>1?0:verbose+1):brief, scan, SparcAdjust, ss, homehost);
|
||||
rv = Examine(devlist, scan?(verbose>1?0:verbose+1):brief,
|
||||
export, scan,
|
||||
SparcAdjust, ss, homehost);
|
||||
} else {
|
||||
if (devlist == NULL) {
|
||||
if (devmode=='D' && scan) {
|
||||
|
|
7
mdadm.h
7
mdadm.h
|
@ -330,9 +330,10 @@ extern char *map_dev(int major, int minor, int create);
|
|||
extern struct superswitch {
|
||||
void (*examine_super)(struct supertype *st, char *homehost);
|
||||
void (*brief_examine_super)(struct supertype *st);
|
||||
void (*export_examine_super)(struct supertype *st);
|
||||
void (*detail_super)(struct supertype *st, char *homehost);
|
||||
void (*export_super)(struct supertype *st);
|
||||
void (*brief_detail_super)(struct supertype *st);
|
||||
void (*export_detail_super)(struct supertype *st);
|
||||
void (*uuid_from_super)(struct supertype *st, int uuid[4]);
|
||||
void (*getinfo_super)(struct supertype *st, struct mdinfo *info);
|
||||
int (*match_home)(struct supertype *st, char *homehost);
|
||||
|
@ -451,8 +452,8 @@ extern int Create(struct supertype *st, char *mddev, int mdfd,
|
|||
|
||||
extern int Detail(char *dev, int brief, int export, 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, char *homehost);
|
||||
extern int Examine(mddev_dev_t devlist, int brief, int export, int scan,
|
||||
int SparcAdjust, 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,
|
||||
|
|
24
super0.c
24
super0.c
|
@ -252,6 +252,25 @@ static void brief_examine_super0(struct supertype *st)
|
|||
printf("\n");
|
||||
}
|
||||
|
||||
static void export_examine_super0(struct supertype *st)
|
||||
{
|
||||
mdp_super_t *sb = st->sb;
|
||||
|
||||
printf("MD_LEVEL=%s\n", map_num(pers, sb->level));
|
||||
printf("MD_DEVICES=%d\n", sb->raid_disks);
|
||||
if (sb->minor_version >= 90)
|
||||
printf("MD_UUID=%08x:%08x:%08x:%08x\n",
|
||||
sb->set_uuid0, sb->set_uuid1,
|
||||
sb->set_uuid2, sb->set_uuid3);
|
||||
else
|
||||
printf("MD_UUID=%08x\n", sb->set_uuid0);
|
||||
printf("MD_UPDATE_TIME=%llu\n",
|
||||
__le64_to_cpu(sb->ctime) & 0xFFFFFFFFFFULL);
|
||||
printf("MD_EVENTS=%llu\n",
|
||||
((unsigned long long)sb->events_hi << 32)
|
||||
+ sb->events_lo);
|
||||
}
|
||||
|
||||
static void detail_super0(struct supertype *st, char *homehost)
|
||||
{
|
||||
mdp_super_t *sb = st->sb;
|
||||
|
@ -283,7 +302,7 @@ static void brief_detail_super0(struct supertype *st)
|
|||
printf("%08x", sb->set_uuid0);
|
||||
}
|
||||
|
||||
static void export_super0(struct supertype *st)
|
||||
static void export_detail_super0(struct supertype *st)
|
||||
{
|
||||
mdp_super_t *sb = st->sb;
|
||||
printf("MD_UUID=");
|
||||
|
@ -974,9 +993,10 @@ struct superswitch super0 = {
|
|||
#ifndef MDASSEMBLE
|
||||
.examine_super = examine_super0,
|
||||
.brief_examine_super = brief_examine_super0,
|
||||
.export_examine_super = export_examine_super0,
|
||||
.detail_super = detail_super0,
|
||||
.brief_detail_super = brief_detail_super0,
|
||||
.export_super = export_super0,
|
||||
.export_detail_super = export_detail_super0,
|
||||
#endif
|
||||
.match_home = match_home0,
|
||||
.uuid_from_super = uuid_from_super0,
|
||||
|
|
39
super1.c
39
super1.c
|
@ -375,6 +375,40 @@ static void brief_examine_super1(struct supertype *st)
|
|||
printf("\n");
|
||||
}
|
||||
|
||||
static void export_examine_super1(struct supertype *st)
|
||||
{
|
||||
struct mdp_superblock_1 *sb = st->sb;
|
||||
int i;
|
||||
int len = 32;
|
||||
|
||||
printf("MD_LEVEL=%s\n", map_num(pers, __le32_to_cpu(sb->level)));
|
||||
printf("MD_DEVICES=%d\n", __le32_to_cpu(sb->raid_disks));
|
||||
for (i=0; i<32; i++)
|
||||
if (sb->set_name[i] == '\n' ||
|
||||
sb->set_name[i] == '\0') {
|
||||
len = i;
|
||||
break;
|
||||
}
|
||||
if (len)
|
||||
printf("MD_NAME=%.*s\n", len, sb->set_name);
|
||||
printf("MD_UUID=");
|
||||
for (i=0; i<16; i++) {
|
||||
if ((i&3)==0 && i != 0) printf(":");
|
||||
printf("%02x", sb->set_uuid[i]);
|
||||
}
|
||||
printf("\n");
|
||||
printf("MD_UPDATE_TIME=%llu\n",
|
||||
__le64_to_cpu(sb->utime) & 0xFFFFFFFFFFULL);
|
||||
printf("MD_DEV_UUID=");
|
||||
for (i=0; i<16; i++) {
|
||||
if ((i&3)==0 && i != 0) printf(":");
|
||||
printf("%02x", sb->device_uuid[i]);
|
||||
}
|
||||
printf("\n");
|
||||
printf("MD_EVENTS=%llu\n",
|
||||
(unsigned long long)__le64_to_cpu(sb->events));
|
||||
}
|
||||
|
||||
static void detail_super1(struct supertype *st, char *homehost)
|
||||
{
|
||||
struct mdp_superblock_1 *sb = st->sb;
|
||||
|
@ -408,7 +442,7 @@ static void brief_detail_super1(struct supertype *st)
|
|||
}
|
||||
}
|
||||
|
||||
static void export_super1(struct supertype *st)
|
||||
static void export_detail_super1(struct supertype *st)
|
||||
{
|
||||
struct mdp_superblock_1 *sb = st->sb;
|
||||
int i;
|
||||
|
@ -1386,9 +1420,10 @@ struct superswitch super1 = {
|
|||
#ifndef MDASSEMBLE
|
||||
.examine_super = examine_super1,
|
||||
.brief_examine_super = brief_examine_super1,
|
||||
.export_examine_super = export_examine_super1,
|
||||
.detail_super = detail_super1,
|
||||
.brief_detail_super = brief_detail_super1,
|
||||
.export_super = export_super1,
|
||||
.export_detail_super = export_detail_super1,
|
||||
#endif
|
||||
.match_home = match_home1,
|
||||
.uuid_from_super = uuid_from_super1,
|
||||
|
|
Loading…
Reference in New Issue