i = strtoul(&dent->d_name[4], &rest, 10);
if (rest[0] != '\0')
continue;
+ /*
+ * find the smallest number; the host really needs to export its
+ * own instance number per parent device; relying on the global host
+ * enumeration and plainly rebasing the numbers sounds unreliable
+ */
if (basenum == -1 || i < basenum)
basenum = i;
}
goto out;
}
+ /*
+ * We do not support the ATA transport class, it creates duplicated link
+ * names as the fake SCSI host adapters are all separated, they are all
+ * re-based as host == 0. ATA should just stop faking two duplicated
+ * hierarchies for a single topology and leave the SCSI stuff alone;
+ * until that happens, there are no by-path/ links for ATA devices behind
+ * an ATA transport class.
+ */
+ if (strstr(name, "/ata") != NULL) {
+ parent = NULL;
+ goto out;
+ }
+
parent = handle_scsi_default(parent, path);
out:
return parent;
return parent;
}
-static struct udev_device *handle_cciss(struct udev_device *parent, char **path)
-{
- return NULL;
-}
-
static struct udev_device *handle_ccw(struct udev_device *parent, struct udev_device *dev, char **path)
{
struct udev_device *scsi_dev;
handle_scsi_tape(parent, &path);
} else if (strcmp(subsys, "scsi") == 0) {
parent = handle_scsi(parent, &path);
- } else if (strcmp(subsys, "cciss") == 0) {
- handle_cciss(parent, &path);
} else if (strcmp(subsys, "usb") == 0) {
parent = handle_usb(parent, &path);
} else if (strcmp(subsys, "serio") == 0) {