From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Thu, 25 Dec 2003 22:58:09 +0000 Subject: Re: Possible udev bug and some questions MIME-Version: 1 Content-Type: multipart/mixed; boundary="y0ulUmNC+osPPQO6" Message-Id: List-Id: References: In-Reply-To: To: linux-hotplug@vger.kernel.org --y0ulUmNC+osPPQO6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Fri, Dec 26, 2003 at 12:01:41AM +0200, Martin Schlemmer wrote: > '../ide/host0/bus0/target0/lun0/*' should be the real devices with > /dev/hd* and /dev/{cdroms,discs}/* the symlinks to 'ide/....'. I just > cannot see how to do it easy with udev currently - correct me if I am > wrong. You're right, sorry for the confusion. > Here is once again a replacement on that previous Please have a look at this patch against clean v011. It seems to work now :) thanks, Kay /udev/ |-- cdroms | `-- cdrom0 -> ../hdc |-- discs | |-- disc0 | | |-- disc -> ../../hda | | |-- part1 -> ../../hda1 | | |-- part2 -> ../../hda2 | | `-- part4 -> ../../hda4 | |-- disc1 | | |-- disc -> ../../hdb | | `-- part1 -> ../../hdb1 | `-- disc2 | |-- disc -> ../../hde | `-- part1 -> ../../hde1 |-- hda |-- hda1 |-- hda2 |-- hda4 |-- hdb |-- hdb1 |-- hdc |-- hde |-- hde1 `-- ide |-- host0 | |-- bus0 | | |-- target0 | | | `-- lun0 | | | |-- disc -> ../../../../../hda | | | |-- part1 -> ../../../../../hda1 | | | |-- part2 -> ../../../../../hda2 | | | `-- part4 -> ../../../../../hda4 | | `-- target1 | | `-- lun0 | | |-- disc -> ../../../../../hdb | | `-- part1 -> ../../../../../hdb1 | `-- bus1 | `-- target0 | `-- lun0 | `-- cd -> ../../../../../hdc `-- host2 `-- bus0 `-- target0 `-- lun0 |-- disc -> ../../../../../hde `-- part1 -> ../../../../../hde1 --y0ulUmNC+osPPQO6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename="02-ide-devfs.diff" diff -Nru a/extras/ide-devfs.sh b/extras/ide-devfs.sh --- a/extras/ide-devfs.sh Thu Dec 25 23:53:20 2003 +++ b/extras/ide-devfs.sh Thu Dec 25 23:53:20 2003 @@ -2,7 +2,7 @@ # udev CALLOUT script # return devfs-names for ide-devices -# CALLOUT, BUS="ide", PROGRAM="/etc/udev/ide-devfs.sh %k %b %n", ID="hd*", NAME="%1c", SYMLINK="%2c" +# CALLOUT, BUS="ide", PROGRAM="/etc/udev/ide-devfs.sh %k %b %n", ID="hd*", NAME="%1c", SYMLINK="%2c %3c" HOST=${2%\.[0-9]} TARGET=${2#[0-9]\.} @@ -14,14 +14,34 @@ BUS="0" fi +get_dev_number() { + local x= + local num=0 + local MEDIA= + local DRIVE=${1%[0-9]*} + + for x in /proc/ide/*/media; do + if [ -e "$x" ]; then + MEDIA=`cat $x` + if [ "$MEDIA" = "$2" ]; then + num=`expr $num + 1` + fi + if [ "$x" = "/proc/ide/$DRIVE/media" ]; then + break + fi + fi + done + + echo `expr $num - 1` +} + if [ -z "$3" ]; then MEDIA=`cat /proc/ide/$1/media` if [ "$MEDIA" = "cdrom" ]; then - echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/cd + echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/cd cdroms/cdrom`get_dev_number $1 cdrom` elif [ "$MEDIA" = "disk" ]; then - echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/disc + echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/disc discs/disc`get_dev_number $1 disk`/disc fi else - echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/part$3 + echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/part$3 discs/disc`get_dev_number $1 disk`/part$3 fi - --y0ulUmNC+osPPQO6-- ------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel