int fd2 = dev_open(dv, O_RDONLY);
if (fd2 >=0 && st &&
st->ss->load_super(st, fd2, &super, NULL) == 0) {
- st->ss->getinfo_super(&info, super);
+ st->ss->getinfo_super(st, &info, super);
if (info.array.ctime != array.ctime ||
info.array.level != array.level) {
- free(super);
+ st->ss->free_super(st, super);
super = NULL;
}
}
printf("MD_METADATA=%d.%d\n", array.major_version,
array.minor_version);
if (super)
- st->ss->export_super(super);
+ st->ss->export_super(st, super);
goto out;
}
if (brief)
- printf("ARRAY %s level=%s num-devices=%d", dev, c?c:"-unknown-",array.raid_disks );
+ printf("ARRAY %s level=%s metadata=%d.%d num-devices=%d", dev,
+ c?c:"-unknown-",
+ array.major_version, array.minor_version,
+ array.raid_disks );
else {
mdu_bitmap_file_t bmf;
unsigned long long larray_size;
break;
default: break;
}
-
+
if (e && e->percent >= 0) {
printf(" Re%s Status : %d%% complete\n",
(super && info.reshape_active)? "shape":"build",
} else if (e && e->percent >= 0)
printf("\n");
if (super && st)
- st->ss->detail_super(super, homehost);
+ st->ss->detail_super(st, super, homehost);
printf(" Number Major Minor RaidDevice State\n");
}
}
if (disk.major == 0 && disk.minor == 0)
continue;
- if (disk.raid_disk >= 0 && disk.raid_disk < array.raid_disks)
+ if (disk.raid_disk >= 0 && disk.raid_disk < array.raid_disks)
disks[disk.raid_disk] = disk;
else if (next < max_disks)
disks[next++] = disk;
if (!brief) {
if (d == array.raid_disks) printf("\n");
if (disk.raid_disk < 0)
- printf(" %5d %5d %5d - ",
+ printf(" %5d %5d %5d - ",
disk.number, disk.major, disk.minor);
else
- printf(" %5d %5d %5d %5d ",
+ printf(" %5d %5d %5d %5d ",
disk.number, disk.major, disk.minor, disk.raid_disk);
- if (disk.state & (1<<MD_DISK_FAULTY)) {
- printf(" faulty");
+ if (disk.state & (1<<MD_DISK_FAULTY)) {
+ printf(" faulty");
if (disk.raid_disk < array.raid_disks &&
disk.raid_disk >= 0)
failed++;
}
if (spares && brief) printf(" spares=%d", spares);
if (super && brief && st)
- st->ss->brief_detail_super(super);
+ st->ss->brief_detail_super(st, super);
+ if (super)
+ st->ss->free_super(st, super);
if (brief > 1 && devices) printf("\n devices=%s", devices);
if (brief) printf("\n");