summaryrefslogtreecommitdiff
path: root/extras
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2006-05-23 13:26:41 +0200
committerKay Sievers <kay.sievers@suse.de>2006-05-23 13:26:41 +0200
commit321f7bbb0a200cd378edfef9a7a2e779f704ac41 (patch)
tree788267a37ec2ceaef60c4d9b0d0d9692bb6aaf5a /extras
parent6deef787557f46628cec4a65e18864173ea720c8 (diff)
path_id: add support for iSCSI devices
Diffstat (limited to 'extras')
-rw-r--r--extras/path_id/path_id59
1 files changed, 59 insertions, 0 deletions
diff --git a/extras/path_id/path_id b/extras/path_id/path_id
index 4941b88a45..a6dfbf1a08 100644
--- a/extras/path_id/path_id
+++ b/extras/path_id/path_id
@@ -312,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
@@ -413,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"
;;