mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

82 lines
1.5 KiB

#!/bin/sh -e
# Inspired from a script by Remco <remco@d-compu.dyndns.org>.
# Support for /dev/discs/* and /dev/cdroms/* by Daniel Mueller <danm@gmx.li>.
#
# BUS="scsi", PROGRAM="/etc/udev/scsi-devfs.sh %k %b %n", \
# NAME="%c{1}", SYMLINK="%k %c{2}"
get_ide_offset() {
local num=0
local dev
for dev in /proc/ide/*/media; do
if [ "`cat $dev`" = "$1" ]; then
num=$(($num + 1))
fi
done
echo $num
}
get_next_number() {
local num=0
local dev
local offset=`get_ide_offset $2`
if [ "$2" = "disk" ]; then
local DRIVE="${1%%[0-9]*}"
local DEVLIST="/sys/block/sd*"
else
local DRIVE=$1
local DEVLIST="/sys/block/sr*"
fi
for dev in $DEVLIST; do
[ "${dev#/sys/block/}" = "$DRIVE" ] && break
num=$(($num + 1))
done
echo $(($offset + $num))
}
# the format is "HOST:BUS:TARGET:LUN"
SCSI_ID=$2
HOST=${SCSI_ID%%:*}
SCSI_ID=${SCSI_ID#*:}
BUS=${SCSI_ID%%:*}
SCSI_ID=${SCSI_ID#*:}
TARGET=${SCSI_ID%%:*}
SCSI_ID=${SCSI_ID#*:}
LUN=$SCSI_ID
case "$1" in
scd*|sr*)
# CDROM/DVD
NAME=cd
LINK="cdroms/cdrom"`get_next_number $1 cdrom`
;;
sd*)
if [ "$3" ]; then
NAME=part$3
LINK="discs/disc"`get_next_number $1 disk`/part${3}
else
NAME=disc
LINK="discs/disc"`get_next_number $1 disk`/disc
fi
;;
nst*)
NAME=$(echo "$1" | sed -e 's/nst0m/nmt/')
[ $NAME = "mt0" ] && LINK=ntape
;;
st*)
NAME=$(echo "$1" | sed -e 's/st0m/mt/')
[ $NAME = "mt0" ] && LINK=tape
;;
sg*|*)
NAME=generic
;;
esac
echo scsi/host$HOST/bus$BUS/target$TARGET/lun$LUN/$NAME $LINK
exit 0