summaryrefslogtreecommitdiffstats
path: root/super-ddf.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-12-04 17:10:43 +1100
committerNeilBrown <neilb@suse.de>2008-12-04 17:10:43 +1100
commitb06e30958b6ef4d26497894b2584757b40565d91 (patch)
treeeaaaea958d6a04bf549f42ebc8f17af111b84fb3 /super-ddf.c
parent8592f29d642655a2b337b010dfa435a10b362769 (diff)
downloadmdadm-b06e30958b6ef4d26497894b2584757b40565d91.tar.gz
mdadm-b06e30958b6ef4d26497894b2584757b40565d91.tar.xz
mdadm-b06e30958b6ef4d26497894b2584757b40565d91.zip
DDF: improve --examine output
Make this more readable and in line with other metadata types by providing a table for the devices. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'super-ddf.c')
-rw-r--r--super-ddf.c57
1 files changed, 38 insertions, 19 deletions
diff --git a/super-ddf.c b/super-ddf.c
index 3b3cac0..0b9e863 100644
--- a/super-ddf.c
+++ b/super-ddf.c
@@ -1026,6 +1026,7 @@ static void examine_vd(int n, struct ddf_super *sb, char *guid)
struct vcl *vcl;
for (vcl = sb->conflist ; vcl ; vcl = vcl->next) {
+ int i;
struct vd_config *vc = &vcl->conf;
if (calc_crc(vc, crl*512) != vc->crc)
@@ -1034,8 +1035,22 @@ static void examine_vd(int n, struct ddf_super *sb, char *guid)
continue;
/* Ok, we know about this VD, let's give more details */
- printf(" Raid Devices[%d] : %d\n", n,
+ printf(" Raid Devices[%d] : %d (", n,
__be16_to_cpu(vc->prim_elmnt_count));
+ for (i=0; i<__be16_to_cpu(vc->prim_elmnt_count); i++) {
+ int j;
+ int cnt = __be16_to_cpu(sb->phys->used_pdes);
+ for (j=0; j<cnt; j++)
+ if (vc->phys_refnum[i] == sb->phys->entries[j].refnum)
+ break;
+ if (i) printf(" ");
+ if (j < cnt)
+ printf("%d", j);
+ else
+ printf("--");
+ }
+ printf(")\n");
+ if (vc->chunk_shift != 255)
printf(" Chunk Size[%d] : %d sectors\n", n,
1 << vc->chunk_shift);
printf(" Raid Level[%d] : %s\n", n,
@@ -1061,6 +1076,7 @@ static void examine_vds(struct ddf_super *sb)
for (i=0; i<cnt; i++) {
struct virtual_entry *ve = &sb->virt->entries[i];
+ printf("\n");
printf(" VD GUID[%d] : ", i); print_guid(ve->guid, 1);
printf("\n");
printf(" unit[%d] : %d\n", i, __be16_to_cpu(ve->unit));
@@ -1084,40 +1100,43 @@ static void examine_pds(struct ddf_super *sb)
int i;
struct dl *dl;
printf(" Physical Disks : %d\n", cnt);
+ printf(" Number RefNo Size Device Type/State\n");
for (i=0 ; i<cnt ; i++) {
struct phys_disk_entry *pd = &sb->phys->entries[i];
int type = __be16_to_cpu(pd->type);
int state = __be16_to_cpu(pd->state);
- printf(" PD GUID[%d] : ", i); print_guid(pd->guid, 0);
- printf("\n");
- printf(" ref[%d] : %08x\n", i,
+ //printf(" PD GUID[%d] : ", i); print_guid(pd->guid, 0);
+ //printf("\n");
+ printf(" %3d %08x ", i,
__be32_to_cpu(pd->refnum));
- printf(" mode[%d] : %s%s%s%s%s\n", i,
+ printf("%lluK ", __be64_to_cpu(pd->config_size)>>1);
+ for (dl = sb->dlist; dl ; dl = dl->next) {
+ if (dl->disk.refnum == pd->refnum) {
+ char *dv = map_dev(dl->major, dl->minor, 0);
+ if (dv) {
+ printf("%-10s", dv);
+ break;
+ }
+ }
+ }
+ if (!dl)
+ printf("%10s","");
+ printf(" %s%s%s%s%s",
(type&2) ? "active":"",
- (type&4) ? "Global Spare":"",
+ (type&4) ? "Global-Spare":"",
(type&8) ? "spare" : "",
(type&16)? ", foreign" : "",
(type&32)? "pass-through" : "");
- printf(" state[%d] : %s%s%s%s%s%s%s\n", i,
+ printf("/%s%s%s%s%s%s%s",
(state&1)? "Online": "Offline",
(state&2)? ", Failed": "",
(state&4)? ", Rebuilding": "",
(state&8)? ", in-transition": "",
- (state&16)? ", SMART errors": "",
- (state&32)? ", Unrecovered Read Errors": "",
+ (state&16)? ", SMART-errors": "",
+ (state&32)? ", Unrecovered-Read-Errors": "",
(state&64)? ", Missing" : "");
- printf(" Avail Size[%d] : %llu K\n", i,
- __be64_to_cpu(pd->config_size)>>1);
- for (dl = sb->dlist; dl ; dl = dl->next) {
- if (dl->disk.refnum == pd->refnum) {
- char *dv = map_dev(dl->major, dl->minor, 0);
- if (dv)
- printf(" Device[%d] : %s\n",
- i, dv);
- }
- }
printf("\n");
}
}