+ return hostdev;
+}
+
+static struct udev_device *handle_scsi_lun(struct udev_device *parent, char **path)
+{
+ const char *devtype;
+ const char *name;
+ const char *id;
+
+ devtype = udev_device_get_devtype(parent);
+ if (devtype == NULL || strcmp(devtype, "scsi_device") != 0)
+ return parent;
+
+ /* firewire */
+ id = udev_device_get_sysattr_value(parent, "ieee1394_id");
+ if (id != NULL) {
+ path_prepend(path, "ieee1394-0x%s", id);
+ goto out;
+ }
+
+ name = udev_device_get_syspath(parent);
+
+ /* fibre channel */
+ if (strstr(name, "/rport-") != NULL) {
+ parent = handle_fc(parent, path);
+ goto out;
+ }
+
+ /* sas */
+ if (strstr(name, "/end_device-") != NULL) {
+ parent = handle_sas(parent, path);
+ goto out;
+ }
+
+ if (strstr(name, "/session") != NULL) {
+ parent = handle_iscsi(parent, path);
+ goto out;
+ }
+
+ parent = handle_scsi(parent, path);
+out:
+ return parent;