@@ -120,8 +120,15 @@ path_discover (vector pathvec, struct config * conf,
pp = find_path_by_dev(pathvec, (char *)devname);
if (!pp) {
- return store_pathinfo(pathvec, conf,
- udevice, flag, NULL);
+ char devt[BLK_DEV_SIZE];
+ dev_t devnum = udev_device_get_devnum(udevice);
+
+ snprintf(devt, BLK_DEV_SIZE, "%d:%d",
+ major(devnum), minor(devnum));
+ pp = find_path_by_devt(pathvec, devt);
+ if (!pp)
+ return store_pathinfo(pathvec, conf,
+ udevice, flag, NULL);
}
return pathinfo(pp, conf, flag);
}
@@ -330,12 +330,15 @@ int disassemble_map(vector pathvec, char *params, struct multipath *mpp,
if (devt2devname(devname, FILE_NAME_SIZE, word)) {
condlog(2, "%s: cannot find block device",
word);
- FREE(word);
- continue;
+ devname[0] = '\0';
}
- if (pathvec)
- pp = find_path_by_dev(pathvec, devname);
+ if (pathvec) {
+ if (strlen(devname))
+ pp = find_path_by_dev(pathvec, devname);
+ else
+ pp = find_path_by_devt(pathvec, word);
+ }
if (!pp) {
pp = alloc_path();