From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Thu, 25 Dec 2003 19:32:22 +0000 Subject: Re: Possible udev bug and some questions MIME-Version: 1 Content-Type: multipart/mixed; boundary="EeQfGwPcQSOJBaQU" Message-Id: List-Id: References: In-Reply-To: To: linux-hotplug@vger.kernel.org --EeQfGwPcQSOJBaQU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Thu, Dec 25, 2003 at 09:24:57PM +0200, Martin Schlemmer wrote: > On Thu, 2003-12-25 at 12:06, Kay Sievers wrote: > > On Thu, Dec 25, 2003 at 12:25:22AM +0200, Martin Schlemmer wrote: > > > 3) After looking at ide-devfs.sh, I converted it to create the 'compat' > > > symlinks (/dev/{cdroms,discs}/* stuff) if anybody is interested (as > > > ide-devfs-compat.sh). > > [...] > > > 4) Is there any reason why only one 'method' (meaning only one of the > > > callouts I may have for ide devices - I may want to use both the > > > ide-devfs.sh and ide-devfs-compat.sh to have multiple symlinks for on > > > device ...) is done for each device and/or hotplug event (beside lack > > > of time to implement) ? Same for why only 'type' of 'method' is done > > > for each (if a CALLOUT is done, the rest is skipped) ? > > > > Why not merge the two callout scripts in one, so that it > > returns the two symlinks at once? > > We support multiple symlinks separated by spaces. > > > > ...,NAME="%k", SYMLINK="%2c %3c" > > > > Right, now why isn't that in the docs? Unfortunately I also missed it > while trying at hacking multiple SYMLINK=foo, SYMLINK=bar support. it's in a man page example :) here is a patch for the script and a small fix for namedev to work with... thanks, Kay --EeQfGwPcQSOJBaQU 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 20:27:43 2003 +++ b/extras/ide-devfs.sh Thu Dec 25 20:27:43 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, 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,33 @@ BUS="0" fi +get_dev_number() { + local x= + local num=0 + local MEDIA= + + 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/$1/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 disc` fi else echo $1 ide/host$HOST/bus$BUS/target$TARGET/lun0/part$3 fi - diff -Nru a/namedev.c b/namedev.c --- a/namedev.c Thu Dec 25 20:27:43 2003 +++ b/namedev.c Thu Dec 25 20:27:43 2003 @@ -200,11 +200,12 @@ case 'D': if (strlen(udev->kernel_number) == 0) { strcat(pos, "disc"); + dbg("substitute devfs disc"); break; } strcat(pos, "part"); strcat(pos, udev->kernel_number); - dbg("substitute kernel number '%s'", udev->kernel_number); + dbg("substitute devfs part number '%s'", udev->kernel_number); break; case 'm': sprintf(pos, "%u", udev->minor); @@ -225,12 +226,14 @@ num--; pos3 = strsep(&pos2, " "); if (pos3 == NULL) { - dbg("requested part of callout string not found"); + dbg("requested part of callout string is empty"); break; } } - strcat(pos, pos3); - dbg("substitute partial callout output '%s'", pos3); + if (pos3) { + strcat(pos, pos3); + dbg("substitute partial callout output '%s'", pos3); + } } else { strcat(pos, udev->callout_value); dbg("substitute callout output '%s'", udev->callout_value); --EeQfGwPcQSOJBaQU-- ------------------------------------------------------- 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