sd_alias: use DEVPATH instead of path_id to extract SCSI ID master v0.3
authorChristophe Vu-Brugier <cvubrugier@lacie.com>
Thu, 12 Jan 2012 10:42:20 +0000 (11:42 +0100)
committerSimon Guinot <simon.guinot@sequanux.org>
Thu, 12 Jan 2012 10:53:14 +0000 (11:53 +0100)
sd_alias uses path_id to retrieve the SCSI ID of a device. However,
path_id returns a relative SCSI ID: it is rebased so that the first
device in a SCSI subsystem has a host ID equal to 0. As a result,
path_id may return the same SCSI ID for several devices.

  http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;f=extras/path_id/path_id.c;h=dcee37881fcd0de1565743d658f9f379c7e8d3ef#l203

Signed-off-by: Christophe Vu-Brugier <cvubrugier@lacie.com>
sd_alias/60-persistent-storage-sd-alias.rules
sd_alias/sd_alias

index acfd166..1f092c3 100644 (file)
@@ -1,7 +1,6 @@
 KERNEL!="sd*", GOTO="persistent_storage_sd_alias_end"
 
-ENV{ID_PATH}=="", IMPORT{program}="path_id %p"
-IMPORT{program}="sd_alias $env{ID_PATH}"
+IMPORT{program}="sd_alias $env{DEVPATH}"
 
 ENV{SD_ALIAS}=="", GOTO="persistent_storage_sd_alias_end"
 
index a17304d..2671d42 100755 (executable)
@@ -4,7 +4,7 @@ config_file=/etc/sd_alias.conf
 
 get_scsi_id()
 {
-       echo $1 | sed -n "s/.*scsi-\([^-]*\).*/\1/p"
+       echo $1 | grep -oE '[0-9]+(:[0-9]+){3}'
 }
 
 get_scsi_alias()
@@ -14,11 +14,11 @@ get_scsi_alias()
        echo $2
 }
 
-id_path=$1
+devpath=$1
 
 [ -f "$config_file" ] || exit 1
 
-sd_alias=$(get_scsi_alias $(get_scsi_id $id_path))
+sd_alias=$(get_scsi_alias $(get_scsi_id $devpath))
 
 [ -n "$sd_alias" ] || exit 1
 echo "SD_ALIAS=$sd_alias"