]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Detail.c
Create missing /dev files where needed.
[thirdparty/mdadm.git] / Detail.c
index 2986a6eb818970b13b41e376b652629111b15657..d322732c4222433092997ad45072bc3c2924f48a 100644 (file)
--- a/Detail.c
+++ b/Detail.c
@@ -105,17 +105,16 @@ int Detail(char *dev, int brief, int test)
                    disk.major == 0 &&
                    disk.minor == 0)
                        continue;
-               if ((dv=map_dev(disk.major, disk.minor))) {
+               if ((dv=map_dev(disk.major, disk.minor, 1))) {
                        if (!super && (disk.state & (1<<MD_DISK_ACTIVE))) {
                                /* try to read the superblock from this device
                                 * to get more info
                                 */
-                               int fd2 = open(dv, O_RDONLY);
+                               int fd2 = dev_open(dv, O_RDONLY);
                                if (fd2 >=0 && st &&
                                    st->ss->load_super(st, fd2, &super, NULL) == 0) {
                                        struct mdinfo info;
-                                       struct mddev_ident_s ident;
-                                       st->ss->getinfo_super(&info, &ident, super);
+                                       st->ss->getinfo_super(&info, super);
                                        if (info.array.ctime != array.ctime ||
                                            info.array.level != array.level) {
                                                free(super);
@@ -135,7 +134,7 @@ int Detail(char *dev, int brief, int test)
                mdu_bitmap_file_t bmf;
                unsigned long array_size;
                unsigned long long larray_size;
-               struct mdstat_ent *ms = mdstat_read(0);
+               struct mdstat_ent *ms = mdstat_read(0, 0);
                struct mdstat_ent *e;
                int devnum = array.md_minor;
                if (major(stb.st_rdev) != MD_MAJOR)
@@ -236,6 +235,7 @@ int Detail(char *dev, int brief, int test)
        for (d=0; d<max_disks; d++) {
                disks[d].state = (1<<MD_DISK_REMOVED);
                disks[d].major = disks[d].minor = 0;
+               disks[d].number = disks[d].raid_disk = d;
        }
 
        next = array.raid_disks;
@@ -307,7 +307,7 @@ int Detail(char *dev, int brief, int test)
                                rv |= 2;
                        rv |= 1;
                }
-               if ((dv=map_dev(disk.major, disk.minor))) {
+               if ((dv=map_dev(disk.major, disk.minor, 0))) {
                        if (brief) {
                                if (devices) {
                                        devices = realloc(devices,