Comment 18 for bug 1473934

Revision history for this message
bugproxy (bugproxy) wrote : Strace Log

------- Comment on attachment From <email address hidden> 2015-07-13 14:13 EDT-------

strace -e open fdisk -l
strace -e open fdisk -l /dev/mapper/mpath0

Both commands gives same results (reading only /dev/sdx and /dev/hdx) and in unable to read multipath disk. And looking at code it seems it is meant to be so.

root@dilllp1:/# ll /dev/mapper/
total 0
drwxr-xr-x 2 root root 400 Jul 12 21:03 ./
drwxr-xr-x 13 root root 6400 Jul 12 21:03 ../
crw------- 1 root root 10, 236 Jul 12 20:46 control
lrwxrwxrwx 1 root root 7 Jul 13 08:41 mpath0 -> ../dm-0
brw------- 1 root root 252, 6 Jul 12 20:46 mpath0-part1
brw------- 1 root root 252, 7 Jul 12 20:46 mpath0-part2
brw------- 1 root root 252, 8 Jul 12 20:46 mpath0-part3
lrwxrwxrwx 1 root root 7 Jul 12 20:47 mpath1 -> ../dm-1
brw------- 1 root root 252, 9 Jul 12 20:46 mpath1-part1
brw------- 1 root root 252, 11 Jul 12 20:46 mpath1-part2
lrwxrwxrwx 1 root root 7 Jul 12 20:54 mpath2 -> ../dm-2
brw-rw---- 1 root disk 252, 16 Jul 12 20:47 mpath2-part1
brw-rw---- 1 root disk 252, 17 Jul 12 20:47 mpath2-part2
lrwxrwxrwx 1 root root 7 Jul 12 21:03 mpath3 -> ../dm-3
brw-rw---- 1 root disk 252, 13 Jul 12 21:03 mpath3p1
brw-rw---- 1 root disk 252, 14 Jul 12 21:03 mpath3-part1
lrwxrwxrwx 1 root root 7 Jul 12 20:52 mpath4 -> ../dm-4
lrwxrwxrwx 1 root root 7 Jul 12 20:47 mpath5 -> ../dm-5
lrwxrwxrwx 1 root root 8 Jul 12 20:47 mpath6 -> ../dm-10
lrwxrwxrwx 1 root root 8 Jul 12 21:03 mpath7 -> ../dm-12
root@dilllp1:/#
root@dilllp1:/#
root@dilllp1:/# ls -l /dev/dm-0
brw-rw---- 1 root disk 252, 0 Jul 13 08:41 /dev/dm-0
root@dilllp1:/#

Looking at code : fdisk.c

-----------------------
void try(char *device)
{
        disk_device = device;
        if (!setjmp(listingbuf)) {
                if ((fd = open(disk_device, type_open)) >= 0) {
                        close(fd);
                        get_boot();
                        list_table();
                        if (partitions > 4)
                                delete_partition(ext_index);
              } else {
                                /* Ignore other errors, since we try IDE
                                   and SCSI hard disks which may not be
                                   installed on the system. */
                 if(errno == EACCES) {
                    fprintf(stderr, "Cannot open %s\n", device);
                    exit(1);
                 }
              }
        }
}

void main(int argc, char **argv)
{
        if (argc > 3)
                fatal(usage);
        if (argc > 1 && *argv[1] == '-') {
                switch (*(argv[1] + 1)) {
                        case 'v':
                                printf("fdisk v" VERSION "\n");
                                exit(0);
                        case 'l':
                                listing = 1;
                                type_open = O_RDONLY;
                                try("/dev/hda");
                                try("/dev/hdb");
                                try("/dev/hdc");
                                try("/dev/hdd");
                                try("/dev/sda");
                                try("/dev/sdb");
                                try("/dev/sdc");
                                try("/dev/sdd");
                                try("/dev/sde");
                                try("/dev/sdf");
                                try("/dev/sdg");
                                try("/dev/sdh");
                                exit(0);
                        case 's': {

------------------------------------------------------------