Man Linux: Main Page and Category List

NAME

       scsidev - populate /dev/scsi with  device  names  that  are  persistent
       against SCSI configuration changes.

SYNOPSIS

       scsidev [ -f ] [ -n ] [ -d ] [ -l ] [ -L ] [ -m mode ] [ -c mxms ] [ -A
       aliasfile ] [ -r ] [ -M ] [ -e ] [ -o ] [ -s ] [ -v ] [ -q ] [ -h ]

DESCRIPTION

       scsidev is a utility that is used to guarantee  that  the  same  device
       node  can  be  used for the same scsi device, no matter what other scsi
       devices are added or removed from the scsi chain.  The  need  for  this
       tool  arose  because  device  numbers  are assigned dynamically at boot
       time, and if a new disk were added to  the  system  (or  if  some  disk
       didn’t  spin  up),  then  fixed  device  nodes  would  cause  the wrong
       filesystems to be mounted, checked,  etc.   This  can  also  result  in
       security  holes,  as  some device nodes may have permissions that allow
       general users access to the raw device, and if  the  mappings  were  to
       change, users would be able to access different devices.

       scsidev  is  designed  to  be used once each time the system boots.  It
       will scan all of the detected devices on the system,  and  determine  a
       immutable  name that will represent the device.  It first checks to see
       if a node by this name already exists - if this is the  case,  then  it
       checks  to  see if the major/minor numbers are correct.  If a change in
       the minor number is required, then a new device  is  created  with  the
       correct  major/minor  numbers,  and  in  addition,  any  ownership  and
       permissions for the old device are applied to the new device.

       Once this process is complete,  then  scsidev  will  scan  all  of  the
       entries  in  the  /dev/scsi  directory,  and see if any of them are for
       devices nodes which were added for devices that are  not  active.   The
       permissions  of  inactive devices are stored in a .shadow. file and the
       device node is removed as a security precaution, since these might have
       permissions  that would allow people to access devices that they should
       not be able to access.  This is the default behaviour and is considered
       ideal  for most cases, as it preserves the ownership and permissions of
       the files and is secure.

       The so called sanitizing can be influenced by the options -f -d -n.

       When you rescan the bus  by  using  the  rescan-scsi-bus.sh  script  or
       manually by using commands like
       echo "scsi add-single-device C B T U" >/proc/scsi/scsi
       (C  = Controller (host) no., B = Bus (Channel), T = Target (SCSI ID), U
       = Unit (SCSI LUN)) after the system is booted, then you  will  have  to
       rerun  scsidev  so that the device nodes for the newly detected devices
       are properly updated.

       The  device  nodes   that   scsidev   creates   look   something   like
       "sdh4-334c0i0l0p1".   In  this case, the various components of the name
       represent physical attributes about the device or the host  adapter  to
       which  it  is  connected.  To begin with, the "h4" indicates that it is
       connected to an Adaptec 1542.  The "-334" is  a  means  of  identifying
       which  1542  the  device is attached to (since linux supports more than
       one 1542 in the system at the same time) and (in this case) corresponds
       to the IO Port number (hex) of the controller (this is the host adapter
       id number).  The "c0" represents the channel number  (since  some  host
       adapters  can  drive  multiple scsi busses).  The "i0l0" indicates that
       this device is scsi ID 0, with  lun  0.   Finally  the  "p1"  indicated
       partition number 1.

OPTIONS

       -f     Flush  everything  from /dev/scsi prior to scanning the detected
              devices.  This means that new device nodes will be created  even
              if the old ones were OK.

       -d     Sanitize  by  deletion.  The  .shadow.  backup files will not be
              created, so you loose all non-default ownership/permissions that
              may have been set.

       -n     Don’t  touch  device  nodes for non-existing SCSI devices.  This
              might  have  security  implications   and   is   therefore   not
              recommended.

       -l     Symbolic  link  mode.  Instead of creating nodes, symbolic links
              are created which point to the older /dev/sda1 types  of  device
              nodes.  When  using this option, the permissions of the /dev/XXX
              device nodes will  be  changed  to  match  the  ones  stored  in
              /dev/scsi/YYY file, if present.

       -L     Use   symbolic  names  for  the  aliases  assigned  through  the
              /etc/scsi.alias settings (see below).

       -m mode
              Specifies the mode (permissions) for new entries that need to be
              created.

       -c maxmiss
              Normally,  if  scsidev  fails  to open a generic scsi device, it
              finishes its scan for devices. With  this  option,  it  goes  on
              until maxmiss missing devices were found.  This is only used, if
              you don’t have the /proc/scsi/scsi extensions for large disks.

       -A aliasfile
              Use an alternative file instead of the  default  /etc/scsi.alias
              (see below).

       -r     scsidev  does first probe the generic and then -- if appropriate
              -- the other highlevel  devices  (st,  sd,  sr).  For  removable
              devices  (sd,  sr,  osst),  this  will  fail,  if  no  medium is
              inserted, so scsidev can not ensure, that  the  device  actually
              corresponds  to  the one reported by the sg interface. After the
              first device scan, the situation is clear and  scsidev  will  do
              the  right guesses. So using -r in bootup scripts is safe. After
              you removed devices from your SCSI config,  it  isn’t  safe  any
              longer.    This   is   only   needed,  if  you  don’t  have  the
              /proc/scsi/scsi extensions for large disks.

       -M     Multipath support.  scsidev normally does complain if a line  in
              scsi.alias  matches  more than one device and does not create an
              alias then. With multipatch support  on,  it  just  creates  the
              alias for the first device found matching the description in the
              scsi.alias description.

       -e     Instructs scsidev to use devfs like names, i.e. using  the  cbtu
              (controller, bus, target unit) characters instead of hcil (host,
              channel, scsi Id, scsi Lun) to build the device name.

       -o     Instructs scsidev to use scd instead of sr for the old names  of
              CD-ROM devices (relevant for symlink mode).

       -s     Tells scsidev
               to  print out the device serial numbers of all detected devices
              on the system. This string can be useful  for  forming  aliases.
              If supported, also the WWID is printed.

       -v     Verbosity.   Mainly  used  for debugging purposes.  Use multiple
              times for more verbosity.

       -q     Be Quiet.  Only produce output, if there are errors.

       -h     Output short usage summary and copyright info and exit.

ALIASES

       It was intended that scsidev be useful  without  any  configuration  at
       all.   There are times when it is much more convenient to have symbolic
       names for various devices.  These symbolic names should  track  devices
       as  they  get  moved from controller to another, or even if the SCSI id
       number is changed.

       The general idea is that there is a configuration file  /etc/scsi.alias
       which lists the aliases that scsidev will attempt to create.  Each line
       represents a separate alias, and consists of a series of tokens.   Here
       are a couple of example entries:
       serial_number="DX908FK", devtype=disk, alias=fourgig
       manufacturer=WANGTEK, devtype=tape, alias=qictape
       id=2, devtype=generic, alias=cdwriter
       The  minimum requirements are that each line have a alias and a devtype
       field.  The alias will be used to build the pathnames, and the  devtype
       must be one of disk, tape, osst, cdrom or generic.

       The  additional  qualifiers  are  optional,  and  you  must  specify  a
       sufficient number of them such that  the  alias  will  match  only  one
       device.  The allowable qualifiers are:

       manufacturer=
              Specifies the name of the manufacturer.  This is the same string
              that is printed at boot time,  and  is  also  available  through
              /proc/scsi.

       model= Specifies  the  model  number  of  the device.  This is the same
              string that is printed at  boot  time,  and  is  also  available
              through /proc/scsi.

       rev=   Specifies  the  revision  string of the device. This is the same
              string that is printed at  boot  time,  and  is  also  available
              through /proc/scsi.

       serial_number=
              Specifies  the  serial  number  of  the device.  Not all devices
              implement this, but for those that do it provides  a  convenient
              mechanism  to  uniquely  identify a device no matter where it is
              found on the scsi chain. The serial number is the  one  reported
              in  INQUIRY page 0x80 with EVPD=1. It is displayed by scsidev -s
              .

       wwid=  Specifies the WWID number of a device. This  is  a  64bit  world
              wide  unique  number,  which  is supported by SCSI-3 devices and
              reported via INQUIRY page 0x83 with EVPD=1. If  supported,  it’s
              displayed by scsidev -s .

       id=    Specifies the scsi id number for the device.

       lun=   Specifies the lun for the device.  Most devices have a lun of 0,
              and it  is  only  special  devices  such  as  cd  changers  that
              implement multiple lun devices.

       chan=  Specifies  which channel (i.e. which bus) for host adapters that
              drive multiple channels.

       partition=
              Specifies the partition number for disk drives.  If unspecified,
              the alias will match all partitions on the disk.

       hostid=
              Specifies   the   host   adapter   id   number  (0x334  part  of
              sdh4-334c0i0l0p1 for example).

       hostnum=
              Specifies the  unique  number  that  each  host  adpater  driver
              returns.   Generally  this  number  is always 0 except for cases
              where the driver supports more than one device of a  given  type
              on the system.

       hostname=
              Specifies  the  host  adapter driver name. (Only the given chars
              need to match, so you may omit the version number.)

       Note that the specifiers which take string arguments can be  quoted  if
       the string contains whitespace.

       For   disks,  aliases  for  all  partitions  will  be  created  (unless
       partition= is specified). The names get a -pN suffix (N indicating  the
       number  of  the  partition.  For  tapes  (st  and  osst type), the non-
       rewinding variant with an n prepended will be created automatically.

AUTHOR

       scsidev
        ... was written by Eric Youngdale <eric@aib.com>
        ... was enhanced by Kurt Garloff <garloff@suse.de>

BUGS

       Probably there are ...

       The BIOS and LILO do not have the knowledge about the SCSI  devices  at
       boot  time, so you still have to ensure, your kernel can be loaded when
       you insert a new disk.

COPYRIGHT

       This program is free software. You can use it under the  terms  of  the
       GNU  GPL  (General  Public License) Version 2 (or any later version, at
       your option).  Note, that  the  GNU  GPL  implies,  that  there  is  NO
       WARRANTY   at   all.    Full   text   of   the  GPL  can  be  found  in
       /usr/share/common-licenses/GPL file.

AVAILABILITY

       scsidev is available from
       http://www.suse.de/~garloff/linux/scsidev/
       and
       http://www.garloff.de/kurt/linux/scsidev/
       and will also be put on standard anonymous ftp servers.
       The old version is available from
       ftp://tsx-11.mit.edu/pub/linux/BETA/scsi/