From b0c63f3203c15caf4d2fa1ef7adf4b4cb0c67ee9 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Mon, 15 Aug 2005 06:54:20 +0000 Subject: Fix --detail output for version 1 superblocks. As raid_disk no longer matches number, we do things differently. Signed-off-by: Neil Brown --- Detail.c | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'Detail.c') diff --git a/Detail.c b/Detail.c index 41b28a5..911e7fc 100644 --- a/Detail.c +++ b/Detail.c @@ -41,6 +41,8 @@ int Detail(char *dev, int brief, int test) int fd = open(dev, O_RDONLY, 0); int vers; mdu_array_info_t array; + mdu_disk_info_t *disks; + int next; int d; time_t atime; char *c; @@ -214,11 +216,15 @@ int Detail(char *dev, int brief, int test) printf(" Number Major Minor RaidDevice State\n"); } - for (d= 0; d < max_disks; d++) { + disks = malloc(max_disks * sizeof(mdu_disk_info_t)); + for (d=0; d= 0 && disk.raid_disk < array.raid_disks) + disks[disk.raid_disk] = disk; + else if (next < max_disks) + disks[next++] = disk; + } + + for (d= 0; d < max_disks; d++) { + char *dv; + mdu_disk_info_t disk = disks[d]; + if (d >= array.raid_disks && disk.major == 0 && disk.minor == 0) continue; if (!brief) { - if (disk.number == array.raid_disks) printf("\n"); + if (d == array.raid_disks) printf("\n"); if (disk.raid_disk < 0) printf(" %5d %5d %5d - ", disk.number, disk.major, disk.minor); @@ -247,9 +263,11 @@ int Detail(char *dev, int brief, int test) if (disk.state & (1<= 0) printf(" rebuilding"); -- cgit