Skip to contentSkip to conversation

adding callouts to udev for scsi identifiers/serial numbers

DISCUSSION Patrick Mansfield 2 participants 5 messages Oct 8, 2003 – Oct 15, 2003

lore
Share & tools
lore
#0 lore raw

Hi -

I have a scsi_id program intended for use with udev to retrieve SCSI serial number/id's using INQUIRY page 0x80 or page 0x83. scsi_id dumps a unique ID to stdout and exit's with zero status; if no id, it exit's with non-zero status.

I'm working on extending udev to invoke and use the value retrieved via scsi_id.

For small configurations, adding syntax such as the following to a namdev.config works OK:

CALLOUT, PROGRAM="/usr/sbin/scsi_id", BUS="scsi", ID="200609487340b71da", NAME="disk-1"

I have a udev patch for the above (and can post it if anyone wants to see it).

For larger configurations, with many disks in a namdev.config file (my test system has about 50 entries) each configuration line calls out to get the id, and things slow down quite a bit.

For example, running (via command line) udev + scsi_id for 48 /sys/block entries with a corresponding number of callout entries in namedev.config takes about 15 seconds; a simple (not fully functional) caching of the scsi_id results gets this down to about 1.3 seconds.

In order to call out and cache one time, I was thinking of adding namedev.config syntax like:

SET=somevar1, BUS="scsi", PROGRAM="/usr/sbin/scsi_id"

USE=somevar1, BUS="scsi", ID="200609487340b71da", NAME="disk-1" USE=somevar1, BUS="scsi", ID="somenumber", NAME="disk-2"

Any comments or suggestions on the above?

Thanks.

-- Patrick Mansfield

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#1 lore raw
Quoted 5 lines · Patrick Mansfield

I have a scsi_id program intended for use with udev to retrieve SCSI serial number/id's using INQUIRY page 0x80 or page 0x83. scsi_id dumps a unique ID to stdout and exit's with zero status; if no id, it exit's with non-zero status.

Any pointer to where this program is located at?

Quoted 9 lines

In order to call out and cache one time, I was thinking of adding namedev.config syntax like:

SET=somevar1, BUS="scsi", PROGRAM="/usr/sbin/scsi_id"

USE=somevar1, BUS="scsi", ID="200609487340b71da", NAME="disk-1" USE=somevar1, BUS="scsi", ID="somenumber", NAME="disk-2"

Any comments or suggestions on the above?

Caching is good. And yes, something like the above is needed. Hm, but how can we pass command line arguments to the program to be run?

thanks,

greg k-h

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#2 lore raw
In reply to Patrick Mansfield
Quoted 1 line · Greg KH

Any pointer to where this program is located at?

Not yet, I'm presently having password problems to an external web page.

Quoted 5 lines
Quoted 5 lines

In order to call out and cache one time, I was thinking of adding namedev.config syntax like:

SET=somevar1, BUS="scsi", PROGRAM="/usr/sbin/scsi_id"

Quoted 7 lines
Quoted 4 lines

USE=somevar1, BUS="scsi", ID="200609487340b71da", NAME="disk-1" USE=somevar1, BUS="scsi", ID="somenumber", NAME="disk-2"

Any comments or suggestions on the above?

Caching is good. And yes, something like the above is needed. Hm, but how can we pass command line arguments to the program to be run?

I have a scsi_id.config file that can be used to set global and per SCSI vendor + product specific options, but arguments could also be passed via the PROGRAM string.

-- Patrick Mansfield

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#3 lore raw
In reply to Patrick Mansfield
Quoted 9 lines · Patrick Mansfield
Quoted 8 lines · Greg KH
Quoted 8 lines

In order to call out and cache one time, I was thinking of adding namedev.config syntax like:

SET=somevar1, BUS="scsi", PROGRAM="/usr/sbin/scsi_id"

USE=somevar1, BUS="scsi", ID="200609487340b71da", NAME="disk-1" USE=somevar1, BUS="scsi", ID="somenumber", NAME="disk-2"

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

Any comments or suggestions on the above?

Caching is good. And yes, something like the above is needed. Hm, but how can we pass command line arguments to the program to be run?

I have a scsi_id.config file that can be used to set global and per SCSI vendor + product specific options, but arguments could also be passed via the PROGRAM string.

But how could they, as we pass the argc and argv from the udev call to the program defined in the PROGRAM string? Hm, maybe we shouldn't do that, and rely on command line arguments?

thanks,

greg k-h

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#4 lore raw
In reply to Patrick Mansfield
Quoted 9 lines · Greg KH
Quoted 3 lines · Patrick Mansfield

I have a scsi_id.config file that can be used to set global and per SCSI vendor + product specific options, but arguments could also be passed via the PROGRAM string.

But how could they, as we pass the argc and argv from the udev call to the program defined in the PROGRAM string? Hm, maybe we shouldn't do that, and rely on command line arguments?

I meant just add to the PROGRAM string, like:

PROGRAM="scsi_id -g"

And add to argc and argv as needed, for example to pass through the subsystem argument.

-- Patrick Mansfield

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel