harald@xxxxxxxxxx wrote: > From: Harald Hoyer <harald@xxxxxxxxxx> > > based on code by Jim Garlick. > --- > extras/path_id/path_id.c | 64 +++++++++++++++++++++++++++++++++++++++++++++- > 1 files changed, 63 insertions(+), 1 deletions(-) > > diff --git a/extras/path_id/path_id.c b/extras/path_id/path_id.c > index dcee378..c3d241b 100644 > --- a/extras/path_id/path_id.c > +++ b/extras/path_id/path_id.c > @@ -121,7 +121,69 @@ out: > > static struct udev_device *handle_scsi_sas(struct udev_device *parent, char **path) > { > - return NULL; > + struct udev *udev = udev_device_get_udev(parent); > + struct udev_device *end_dev; > + struct udev_device *sasdev; > + struct udev_device *phydev; > + struct udev_device *parent_dev; > + struct udev_device *child_dev; > + char syspath[UTIL_PATH_SIZE], *base; > + char phy_path[UTIL_PATH_SIZE]; > + const char *end_name, *name, *enc, *bay; > + const char *port_path; > + int scsi_host; > + int num_phys = 8; > + int i; > + > + parent_dev = parent; > + while (1) { > + child_dev = parent_dev; > + parent_dev = udev_device_get_parent(child_dev); > + if (parent_dev == NULL) > + return NULL; > + name = udev_device_get_sysname(parent_dev); > + if (strstr(name, "end_device-")) { > + end_dev = parent_dev; > + end_name = name; > + } else if (sscanf(name, "host%d", &scsi_host)) { > + port_path = udev_device_get_syspath(child_dev); > + break; > + } > + } > + This is wrong. The whole idea of path_id is that the path traversal is done in one common loop, from which there are callouts to the individual device handlers. So we should be having one sas_end_device_handler and one sas_host handler. I'll see to come up with an updated version. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxx +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html