A utility program called scsidev adds device names to
the /dev/scsi
directory that reflect the SCSI address
of each device. The first 2 letters of the name are the upper level SCSI
driver name (i.e. either sd, sr, st or sg). The number following the "h"
is the host number while the number following the "-" is meant for
host identification purposes. For PCI adapters this seems to be always
0 while for ISA adapters it is their IO address. [Perhaps this field
could be made more informative or dropped.] The numbers following
the "c", "i" and "l" are channel (bus), target id and lun values
respectively. Raw disks are shown without a trailing partition number
while partitions contained within them are shown with the partition
number following a "p".
The scsidev would typically be run as part of the
boot up sequence. It may also be useful to run it after the SCSI
configuration has changed (e.g. adding or removing lower level driver
modules, or the use of the add/remove-single-device command). After
scsidev has been run on my system which contains
2 disks, a cd reader and writer plus a scanner, then the following
names were added in the /dev/scsi
directory:
$ ls -l /dev/scsi/ # abridged total 0 brw------- 8, 0 Sep 2 11:56 sdh0-0c0i0l0 brw------- 8, 1 Sep 2 11:56 sdh0-0c0i0l0p1 ... brw------- 8, 8 Sep 2 11:56 sdh0-0c0i0l0p8 brw------- 8, 16 Sep 2 11:56 sdh0-0c0i1l0 brw------- 8, 17 Sep 2 11:56 sdh0-0c0i1l0p1 ... brw------- 8, 24 Sep 2 11:56 sdh0-0c0i1l0p8 crw------- 21, 0 Sep 2 11:56 sgh0-0c0i0l0 crw------- 21, 1 Sep 2 11:56 sgh0-0c0i1l0 crw------- 21, 2 Sep 2 11:56 sgh1-0c0i2l0 crw------- 21, 3 Sep 2 11:56 sgh1-0c0i5l0 crw------- 21, 4 Sep 2 11:56 sgh1-0c0i6l0 br-------- 11, 0 Sep 2 11:56 srh1-0c0i2l0 br-------- 11, 1 Sep 2 11:56 srh1-0c0i6l0
The mapping between the SCSI generic device names (sg) and their corresponding names when controlled by other upper level drivers (i.e. sd, sr or st) can be seen by looking for name matches when the second letter is ignored. Hence "sdh0-0c0i0l0" and "sgh0-0c0i0l0" refer to the same device. By process of elimination the "sgh1-0c0i5l0" filename is the scanner since that class of devices can only be accessed via the sg interface.
The scsidev package also includes the ability to introduce names like
/dev/scsi/scanner
by manipulating the
/etc/scsi.alias
configuration file. The package also includes
the useful rescan-scsi-bus.sh utility.
For further information about scsidev see
W6. On my system, both devfs and scsidev
co-exist happily.