1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-06 08:26:52 +03:00
Commit Graph

56 Commits

Author SHA1 Message Date
David Zeuthen
7f4954d040 Export ID_WWN_VENDOR_EXTENSION and ID_WWN_WITH_EXTENSION
Some SCSI devices use the same WWN and have a WWN extension that we
need to take into account when creating the /dev/disk/by-id/wwn
symlinks. Thus, introduce ID_WWN_WITH_EXTENSION. This property will
contain either the WWN (if no extension is present) or the WWN with
the vendor extension appended.

Example:

 # /lib/udev/ata_id/ata_id --export /dev/sda |grep WWN
 ID_WWN=0x5001517387d61905
 ID_WWN_WITH_EXTENSION=0x5001517387d61905

 # /lib/udev/scsi_id --whitelisted --export -d /dev/sdb |grep WWN
 ID_WWN=0x600508b400105df7
 ID_WWN_VENDOR_EXTENSION=0x0000e00000d80000
 ID_WWN_WITH_EXTENSION=0x600508b400105df70000e00000d80000

 # /lib/udev/scsi_id --whitelisted --export -d /dev/sdc |grep WWN
 ID_WWN=0x600508b400105df7
 ID_WWN_VENDOR_EXTENSION=0x0000e00000db0000
 ID_WWN_WITH_EXTENSION=0x600508b400105df70000e00000db0000

Signed-off-by: David Zeuthen <davidz@redhat.com>
2009-12-04 11:40:00 -05:00
David Zeuthen
4e9fdfccbd scsi_id: Export WWN and Unit Serial Number
Since the Unit Serial Number and the WWN are useful bits of
information export them as properties in the udev database. These
bits of information are often printed on the physical disk, see

http://people.freedesktop.org/~david/FUJITSU-MAY2036RC-sas-disk-picture.jpg

and displaying them separately in the UI (or in /dev/disk) might help
users identify the physical disk. This patch exports these bits of
information as ID_WWN and ID_SCSI_SERIAL.

Note that ata_id also use the ID_WWN property since commit
66094a4a7f (2009-11-04).

Also print out ID_SCSI=1 so users of the udev database knows the disk
speaks SCSI.

Here's the scsi_id output from one of my SAS disks with these changes:

 ID_SCSI=1
 ID_VENDOR=FUJITSU
 ID_VENDOR_ENC=FUJITSU\x20
 ID_MODEL=MAY2036RC
 ID_MODEL_ENC=MAY2036RC\x20\x20\x20\x20\x20\x20\x20
 ID_REVISION=0103
 ID_TYPE=disk
 ID_SERIAL=3500000e01b83f520
 ID_SERIAL_SHORT=500000e01b83f520
 ID_WWN=0x500000e01b83f520
 ID_SCSI_SERIAL=B3G1P8500RWT

Unfortunately we can't overload ID_SERIAL for two reasons

 1. ID_SERIAL (and ID_SERIAL_SHORT) exported by scsi_id isn't really
    the unit serial number (as defined by SCSI) - it is sometimes the
    WWN (since it is more unique than the Unit Serial Number) and
    complex rules (to make the serial unique) govern what value to
    use.

 2. It would break existing setups if the value of ID_SERIAL changed

Signed-off-by: David Zeuthen <davidz@redhat.com>
2009-11-23 21:38:21 +01:00
Kay Sievers
a8916c3400 scsi_id: --reformat_serial - use udev_util_replace_whitespace() 2009-06-28 02:27:23 +02:00
Kay Sievers
9060b066d9 move syslog wrapper to libudev 2009-06-09 22:47:48 +02:00
Kay Sievers
065db05221 use more efficient string copying 2009-05-20 17:57:52 +02:00
David Zeuthen
ad88f9409a *_id: add model/vendor enc strings
So ID_MODEL and ID_VENDOR are pretty useful keys. However since we fix
them up (removing leading/trailing whitespace, converts spaces to
underscores) for use in device naming etc. we also force these fixups on
the desktop shell. And this looks pretty ugly.

The attached patch introduces the ID_MODEL_ENC and ID_VENDOR_ENC keys
that contains the encoded version of the raw strings obtained. It's
pretty similar in spirit to ID_FS_LABEL and its cousin ID_FS_LABEL_ENC.

With this patch a desktop shell can fix up these strings as it sees fit.
Note that some fixup is still needed though, for example

# /lib/udev/ata_id --export /dev/sda |grep ID_MODEL
ID_MODEL=INTEL_SSDSA2MH080G1GC
ID_MODEL_ENC=INTEL\x20SSDSA2MH080G1GC\x20\x20\x20\x20\x20\x20\x20\x20
\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20

Note the trailing and leading whitespace. Anyway with the attached patch
the desktop shell should be able to display "INTEL SSDSA2MH080G1GC"
rather than "INTEL_SSDSA2MH080G1GC" to the user.
2009-02-17 21:45:43 +01:00
Kay Sievers
caf4c97a2c scsi_id: do not fail if no serial is found like for optical drives 2008-12-02 19:23:38 +01:00
Kay Sievers
1340a9e9ec scsi_id: make sure, we do not have slashes in values 2008-11-20 07:57:17 +01:00
Kay Sievers
92f4313665 unify string replacement 2008-11-05 21:49:52 +01:00
Kay Sievers
1822e9b033 do not init string arrays, just clear first byte 2008-10-26 02:31:54 +01:00
Alan Jenkins
111e4f81ff replace strncpy() with strlcpy()
The problem was strncpy() doesn't stop after writing the terminating
NUL; by definition it goes on to zero the entire buffer.

I spy another use of strncpy in udev_device_add_property_from_string(),
which is responsible for another ~1% user cpu time...

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
2008-10-21 23:55:13 +02:00
Kay Sievers
033e9f8cde use no_argument, required_argument, optional_argument in longopts 2008-10-02 16:49:05 +02:00
Kay Sievers
4aa0b15efb fix dbg() callers 2008-09-29 19:03:08 +02:00
Kay Sievers
38f27948cd always include config.h from Makefile 2008-09-19 23:03:49 -07:00
Kay Sievers
7d563a17f3 use libudev code, unify logging, pass udev context around everywhere 2008-09-06 15:45:31 +02:00
Kay Sievers
01618658fd use autotools 2008-07-30 01:45:23 +02:00
Kay Sievers
05364975af scsi_id: the fallback fix broke error handling 2008-07-10 22:22:10 +02:00
Kay Sievers
025570aa3e scsi_id: add --sg-version= option 2008-05-14 15:02:17 +02:00
Kay Sievers
2d05764a77 scsi_id: remove bus_id option 2008-05-14 13:59:25 +02:00
Hannes Reinecke
78d9ecfd4f scsi_id: add SGv4 support
Fall back to SGv3, if SGv3 returns a failure/is not available.
2008-05-14 13:55:49 +02:00
Hannes Reinecke
753417db2b scsi_id: remove all sysfs dependencies 2008-05-14 13:42:41 +02:00
Kay Sievers
803ac7a6d8 scsi_id: initialize serial strings 2008-04-20 21:08:45 +02:00
Kay Sievers
c70560feef logging: add trailing newline to all strings 2008-04-20 21:07:06 +02:00
Kay Sievers
fd40749e68 scsi_id: fix typo in help text 2007-05-29 21:26:01 +02:00
Kay Sievers
9eaa50d0e7 scsi_id: add long options 2007-05-25 17:37:47 +02:00
Hannes Reinecke
87cf9f5aac cciss device support 2007-05-25 14:48:08 +02:00
Kay Sievers
58310f6698 scsi_id: accept tabs in /etc/scsi_id.conf 2007-02-25 22:14:14 +01:00
Kay Sievers
11678eff6a scsi_id: export ID_SERIAL_SHORT without vendor/product 2006-10-10 16:56:09 +02:00
Kay Sievers
95776dc6ec consistent key naming to match only the event device or include all parent devices
This scheme is more consistent and makes it obvious if a match happens
against the event device only, or the full chain of parent devices.

The old key names are now:
  BUS -> SUBSYSTEMS
  ID -> KERNELS
  SYSFS -> ATTRS
  DRIVER -> DRIVERS

Match keys for the event device:
  KERNEL
  SUBSYSTEM
  ATTR
  DRIVER (in a future release, for now the same as DRIVERS)

Match keys for all devices along the parent device chain:
  KERNELS
  SUBSYSTEMS
  ATTRS
  DRIVERS

ID, BUS, SYSFS are no longer mentioned in the man page but still work.
DRIVER must be converted to DRIVERS to match the new scheme. For now,
an error is logged, if DRIVER is used. In a future release, the DRIVER
key behaviour will change.
2006-08-19 16:06:25 +02:00
Kay Sievers
05ec6e7507 switch ifdef __KLIBC__ to ifndef __GLIBC__ 2006-08-05 00:35:05 +02:00
Kay Sievers
3d94fb8742 scsi_id: remove dead files
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2006-01-28 16:42:49 +01:00
Kay Sievers
6ecd4d1e36 scsi_id, usb_id: request device parent by subsystem
Request specific parents identified by subsystem and don't rely on
a predefined sequence.
Also let the devpath be longer than 72 chars, tsss ...

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2006-01-18 04:24:48 +01:00
Kay Sievers
1aa1e24848 replace libsysfs
We never used any of the libsysfs convenience features. Here we replace
it completely with 300 lines of code, which are much simpler and a bit
faster cause udev(d) does not open any syfs file for a simple event which
does not need any parent device information.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2006-01-09 21:18:00 +01:00
Hannes Reinecke
d313632b04 fold multiple consecutive whitespace chars into single '_' 2005-12-15 12:22:42 +01:00
Kay Sievers
0e5f8a1fcc scsi_id: switch temporary node creation to /dev
/tmp is not writable on most systems, so just use /dev to create a
temporary node. If called from a udev rule, "-d $tempnode" should be
used and udev will create a temporary node and pass the name before
calling scsi_id.
Also remove gen_scsi_id_udev_rules.sh per Patrick's request, as it's
no longer needed with the persistent disk links.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-09-18 04:49:23 +02:00
Edward Goggin
50be140174 scsi_id: derive a UID for a SCSI-2 not compliant with the page 83
This patch is to enable the use of scsi_id to derive a UID for a SCSI-2
device which is not compliant with the page 83 inquiry reply format for
either SPC-2 or SPC-3.  In this case, the page 83 reply does not
contain a list of  Identification descriptors but a single binary encoded
hexa-decimal Vendor Specified Identifier.

The update is being driven by the need for scsi_id to support older
model EMC Symmetrix hardware, that is, models 4, 5, and 6.
2005-09-14 20:23:48 +02:00
Kay Sievers
c907c823c3 *_id: fix zero length in set_str()
Thanks to Olaf Hering <olh@suse.de>

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-08-22 11:37:12 +02:00
Kay Sievers
853ccc433c fix more compiler warnings ...
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-08-13 00:18:44 +02:00
Kay Sievers
70721db6d7 fix GGC signed pointer warnings and switch volume_id to stdint
Solaris uses volume_id now and they fiddled around with configure scripts
to map the linux kernel int types. Adding the types locally to volume_id
breaks the klibc build, so just switch to these ugly types and forget it. :)

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-08-01 01:33:36 +02:00
Hannes Reinecke
46f01c6dc4 add ID_BUS to *_id programs 2005-07-19 11:18:19 -04:00
Hannes Reinecke
b4a2906bf1 fix usb_id and let scsi_id ignore "illegal request" 2005-07-08 03:29:19 +02:00
Kay Sievers
aaff09a30a add ID_TYPE to the id probers
Export the type of device from ata_id and scsi_id, also strip
leading and trailing whitespace and substitute consecutive
whitespace with a single underline char.

From: Hannes Reinecke <hare@suse.de>
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-06-27 17:04:56 +02:00
Kay Sievers
34129109a1 add -x to scsi_id to export the queried values in env format
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
2005-06-27 02:51:49 +02:00
patmans@us.ibm.com
4e05e4238b [PATCH] update scsi_id to work with libsysfs changes
Update scsi_id to work with the libsysfs changes in udev: use
sysfs_get_classdev_attr and sysfs_get_device_attr in place of
sysfs_read_attribute_value.
2005-04-26 23:39:48 -07:00
patmans@us.ibm.com
07544a93d6 [PATCH] scsi_id changes for use with udev %N and %p
Changes to scsi_id to support the udev %N and %p substitutions:

- Update version from .7 to .8

- change TMP_DIR back to /tmp

- if DEVPATH is set assume hotplug_mode (use syslog for logging, and does
  not output some warnings)

- Always output a newline after the id is printed

- Allow command line options to override settings when hotplug_mode is set

- update man page

- update generator script to use the %N and %p substitutions.
2005-04-26 23:35:15 -07:00
md@Linux.IT
fd3eeb7502 [PATCH] scsi_id: when udevstart is started, /tmp is not writeable. 2005-04-26 23:24:20 -07:00
patmans@us.ibm.com
b337e60790 [PATCH] update udev to scsi_id 0.7
Update udev's scsi_id to version 0.7, this fixes a bad bug in scsi_id on
64 bit systems.
2005-04-26 22:02:45 -07:00
patmans@us.ibm.com
01f950e2eb [PATCH] update udev to include scsi_id 0.6
Here's a patch updating udev's copy of scsi_id to version 0.6.
2005-04-26 21:37:02 -07:00
patmans@us.ibm.com
062db23d5e [PATCH] update udev scsi_id to scsi_id 0.5
This patch syncs the scsi_id in the udev tree to version 0.5.
2005-04-26 21:36:21 -07:00
patmans@us.ibm.com
b484e43622 [PATCH] update udev scsi_id to scsi_id 0.4
This patch syncs the scsi_id in the udev tree to version 0.4.
2005-04-26 21:34:28 -07:00