X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=extras%2Fpath_id%2Fpath_id;h=a6dfbf1a089dd644ea8e50923cf519b9f6463967;hp=0274be391ad95a7961cbb1a49230d059607f8558;hb=321f7bbb0a200cd378edfef9a7a2e779f704ac41;hpb=4809b49e4100e35b0dfb5d93cf501e020366de0b diff --git a/extras/path_id/path_id b/extras/path_id/path_id old mode 100755 new mode 100644 index 0274be391..a6dfbf1a0 --- a/extras/path_id/path_id +++ b/extras/path_id/path_id @@ -96,6 +96,56 @@ handle_pci () { RESULT=0 } +handle_platform () { + local DEV=$1 + cd -P $1 + DEV=${PWD} + platform_id=${DEV##*/} + host_dev_path=$DEV + while [ ! -z "$host_dev_path" ] ; do + case "$host_dev_path" in + */platform*) + host_dev_path=${host_dev_path%/*} + ;; + *) + break + ;; + esac + done + if [ "$d" ]; then + d="platform-$platform_id-$d" + else + d="platform-$platform_id" + fi + D="$host_dev_path" + RESULT=0 +} + +handle_serio () { + local DEV=$1 + cd -P $1 + DEV=${PWD} + serio_id=${DEV##*/serio} + host_dev_path=$DEV + while [ ! -z "$host_dev_path" ] ; do + case "$host_dev_path" in + */serio*) + host_dev_path=${host_dev_path%/*} + ;; + *) + break + ;; + esac + done + if [ "$d" ]; then + d="serio-$serio_id-$d" + else + d="serio-$serio_id" + fi + D="$host_dev_path" + RESULT=0 +} + handle_ide () { : handle_ide $* local DEV=$1 @@ -232,7 +282,7 @@ handle_sas () { sas_phy_path="${sas_phy_path%%/target*}" sas_phy_id="${sas_phy_path%%/*}" sas_rphy_id="${sas_phy_path##*/}" - sas_phy_dev="${sas_host_path}/${sas_phy_id}/sas_phy:${sas_phy_id}" + sas_phy_dev="/sys/class/sas_phy/${sas_phy_id}" if [ -e "$sas_phy_dev/sas_address" ]; then read phy_address < $sas_phy_dev/sas_address read phy_port < $sas_phy_dev/port_identifier @@ -244,7 +294,7 @@ handle_sas () { return fi sas_phy_address="$phy_address:$phy_port:$phy_id" - sas_rphy_dev="${sas_host_path}/${sas_phy_id}/${sas_rphy_id}/sas_rphy:${sas_rphy_id}" + sas_rphy_dev="/sys/class/sas_device/${sas_rphy_id}" if [ -e "$sas_rphy_dev/sas_address" ]; then read rphy_address < $sas_rphy_dev/sas_address read rphy_id < $sas_rphy_dev/phy_identifier @@ -262,6 +312,61 @@ handle_sas () { RESULT=0 } +handle_iscsi() { + local DEV=$1 + local iscsi_session_dir + local iscsi_session iscsi_session_path + local iscsi_connection iscsi_connection_path + # iSCSI device + iscsi_session_dir="${DEV%%/target*}" + iscsi_session="${iscsi_session_dir##*/}" + iscsi_session_path=/sys/class/iscsi_session/${iscsi_session} + if [ ! -d "$iscsi_session_path" ] ; then + : no iSCSI session path + RESULT=1 + return + fi + # Currently we're not doing MC/S + for conn in ${iscsi_session_dir}/connection* ; do + iscsi_conn_num=${conn##*:} + if [ "$iscsi_conn_num" = '0' ] ; then + iscsi_connection=$(basename $conn) + fi + done + if [ -z "$iscsi_connection" ] ; then + : no iSCSI connection found + RESULT=1 + return + fi + iscsi_connection_path=/sys/class/iscsi_connection/${iscsi_connection} + if [ ! -d "$iscsi_connection_path" ] ; then + : no iSCSI connection path + RESULT=1 + return + fi + if [ -e "${iscsi_session_path}/targetname" ]; then + read iscsi_tgtname < ${iscsi_session_path}/targetname + fi + if [ -z "$iscsi_tgtname" ] ; then + : No iSCSI Targetname + RESULT=1 + return + fi + if [ -e "${iscsi_connection_path}/persistent_address" ] ; then + read iscsi_address < ${iscsi_connection_path}/persistent_address + fi + if [ -z "$iscsi_address" ] ; then + : No iSCSI Target address + RESULT=1 + return + fi + if [ -e "${iscsi_connection_path}/persistent_port" ] ; then + read iscsi_port < ${iscsi_connection_path}/persistent_port + fi + d="ip-${iscsi_address}:${iscsi_port}-iscsi-${iscsi_tgtname}" + RESULT=0 +} + handle_usb () { : handle_usb $* local DEV=$1 @@ -306,7 +411,7 @@ handle_device () { subsys="`pwd -P`" cd "$OPWD" subsys="${subsys##*/}" - if [ "$subsys" == "block" ]; then + if [ "$subsys" = "block" ]; then # parent is "block", it's a partition, move one up full_sysfs_path="${full_sysfs_path%/*}" fi @@ -363,6 +468,10 @@ handle_device () { */fw-host[0-9]*/*) handle_firewire "$D" ;; + */session[0-9]*/*) + handle_iscsi "$D" + D= + ;; */host[0-9]*/[0-9]*:[0-9]*:[0-9]*:[0-9]*) handle_scsi "$D" ;; @@ -372,6 +481,12 @@ handle_device () { */pci[0-9]*:[0-9]*) handle_pci "$D" ;; + */serio[0-9]*) + handle_serio "$D" + ;; + */platform/*) + handle_platform "$D" + ;; */devices) D= ;; @@ -382,7 +497,7 @@ handle_device () { ;; esac done - if [ "$TYPE" == "scsi_tape" ] ; then + if [ "$TYPE" = "scsi_tape" ] ; then devname=${full_sysfs_path##*/} rewind="${devname%%st*}" mode="${devname##*st}"