Provided by: sg3-utils_1.46-1build1_amd64 bug


       sg_reset - sends SCSI device, target, bus or host reset; or checks reset state


       sg_reset   [--bus]   [--device]   [--help]   [--host]  [--no-esc]  [--target]  [--verbose]
       [--version] DEVICE


       The sg_reset utility with no options (just a DEVICE) reports on the reset state (e.g. if a
       reset  is underway) of the DEVICE. When given a --device, --target, --bus or --host option
       it requests a device, target, bus or host reset respectively.

       A device reset is applied to the Logical Unit (LU) corresponding to  DEVICE.  It  is  most
       likely  implemented  by  a  Low  level  Driver (LLD) in Linux as a LOGICAL UNIT RESET task
       management function.

       The ability to reset a SCSI target was added in Linux kernel 2.6.27 . A LLD may  send  Low
       level  Drivers  (LLDs)  the I_T NEXUS RESET task management function. Alternatively it may
       use a transport mechanism to do the same thing (e.g. a hard reset on the link containing a
       SAS target).

       In  the Linux kernel 2.6 and 3 series this utility can be called on sd, sr (cd/dvd), st or
       sg device nodes; if the user has appropriate permissions.

       Users of this utility can check whether a reset recovery is already underway before trying
       to  send  a  new  reset  with this utility. Calling this utility with no options, just the
       DEVICE, will do such a check.


       -b, --bus
              attempt a SCSI bus reset. A bus reset is a SCSI Parallel  Interface  (SPI)  concept
              not found in modern transports. A recent LLD may implement it as a series of resets
              on targets that might be considered as siblings to the target on the DEVICE path.

       -d, --device
              attempt a SCSI device reset. This would typically involve sending  a  LOGICAL  UNIT
              RESET task management function to DEVICE.

       -z, --help
              print the usage message then exit.

       -H, --host
              attempt a host reset. The "host" in this context is often called a Host Bus Adapter
              (HBA) and contains one or more SCSI initiators.

       -N, --no-esc
              without this option, if a device reset (--device) fails then it will escalate to  a
              target reset. And if a target reset (--target) fails then it will escalate to a bus
              reset. And if a bus reset (--bus) fails then it will escalate to a host reset. With
              this  option  only  the  requested  reset is attempted. An alternate option name of
              --no-escalate is also accepted.

              The same as -N, --no-esc.

       -t, --target
              attempt a SCSI target reset. A SCSI target contains one or  more  LUs.  This  would
              typically  involve  sending  a  I_T  NEXUS RESET task management function to DEVICE
              There may be a transport action that is equivalent (e.g.  in SAS a  hard  reset  on
              the link that contains the target).

       -v, --verbose
              increase the degree of verbosity (debug messages).

       -V, --version
              prints the version string then exits.


       The  error  recovery  code within the Linux kernel (SCSI mid-level) when faced with a SCSI
       command timing out and no response from the device (LU) does the following. First it tries
       a  device  reset  and  if  that  is  not  successful  tries a target reset. If that is not
       successful it tries a bus reset. If that is not successful it  tries  a  host  reset.  The
       "device,target,bus,host"  order  is the reset escalation that the --no-esc option attempts
       to stop. In large storage configurations the escalation may be (very) undesirable.

       This utility calls the SG_SCSI_RESET ioctl and as of lk 3.10.7 the --no-esc option is  not
       supported. Patches to implement this functionality may be accepted in lk 3.18 or 3.19 .

       SAM-4  and 5 define a hard reset, a LOGICAL UNIT RESET and a I_T NEXUS RESET. A hard reset
       is defined to be a power on condition, a microcode change  or  a  transport  reset  event.
       LOGICAL UNIT RESET and I_T NEXUS RESET can be requested via task management functions (and
       support for LOGICAL UNIT RESET is mandatory). In Linux the SCSI subsystem leaves it up  to
       the  LLDs as to exactly what type (if any) of reset is performed.  The "bus reset" is SCSI
       Parallel Interface (SPI) concept that may not map well to recent SCSI transports so it may
       be  a  dummy  operation. A "host reset" attempts to re-initialize the HBA that the request
       passes through en route to the DEVICE. Note that a "host reset"  and  a  "bus  reset"  may
       cause collateral damage.

       This  utility  does  not allow individual SCSI commands to be aborted. SAM-4 defines ABORT
       TASK and ABORT TASK SET task management functions for that.

       Prior to SAM-3 there was a TARGET RESET task management function. And in SAM-4  I_T  NEXUS
       RESET appeared which seems closely related: the "I_T" stands for Initiator-Target.

       Transports  may have their own types of resets not supported by this utility.  For example
       SAS has a link reset in which both ends of a physical link (e.g.  between a  SAS  expander
       and a SAS tape drive) renegotiate their connection.

       Prior to version 0.57 of this utility the command line had short options only (e.g. -d but
       not --device). Also -h invoked a host reset while in the current version -h is  equivalent
       to  --help  and  both -H and --host invoke a host reset. For backward compatibility define
       the environment variable SG3_UTILS_OLD_OPTS or SG_RESET_OLD_OPTS . In this  case  -h  will
       invoke  a  host  reset  and the output will be verbose as it was previously (equivalent to
       using the --verbose option now).  For example:

           SG_RESET_OLD_OPTS=1 sg_reset -h /dev/sg1
       sg_reset: starting host reset
       sg_reset: completed host reset


       Since  sg3_utils  version   1.23   the   environment   variables   SG3_UTILS_OLD_OPTS   or
       SG_RESET_OLD_OPTS  can be given. When either is present this utility will expect the older
       command line options as outlined in the NOTES section.


       Written by Douglas Gilbert.


       Copyright © 1999-2017 Douglas Gilbert
       This software is distributed under the GPL version 2. There is NO warranty; not  even  for