All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kay Sievers <kay.sievers@vrfy.org>
To: linux-hotplug@vger.kernel.org
Subject: Re: Possible udev bug and some questions
Date: Thu, 25 Dec 2003 19:32:22 +0000	[thread overview]
Message-ID: <marc-linux-hotplug-107238087210440@msgid-missing> (raw)
In-Reply-To: <marc-linux-hotplug-107230596809166@msgid-missing>

[-- Attachment #1: Type: text/plain, Size: 1282 bytes --]

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


[-- Attachment #2: 02-ide-devfs.diff --]
[-- Type: text/plain, Size: 2420 bytes --]

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);

  parent reply	other threads:[~2003-12-25 19:32 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-24 22:25 Possible udev bug and some questions Martin Schlemmer
2003-12-25  0:19 ` Greg KH
2003-12-25  0:30 ` Greg KH
2003-12-25 10:06 ` Kay Sievers
2003-12-25 18:59 ` Martin Schlemmer
2003-12-25 19:32 ` Kay Sievers [this message]
2003-12-25 20:00 ` Kay Sievers
2003-12-25 21:04 ` Kay Sievers
2003-12-25 21:26 ` Kay Sievers
2003-12-25 22:58 ` Kay Sievers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=marc-linux-hotplug-107238087210440@msgid-missing \
    --to=kay.sievers@vrfy.org \
    --cc=linux-hotplug@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.