sg_reset - sends SCSI device, target, bus or host reset; or checks
sg_reset [-b] [-d] [-h] [-t] [-V] DEVICE
The sg_reset utility with no options (just a DEVICE) reports on the
reset state (e.g. if a reset is underway) of DEVICE. When given a -d,
-t, -b or -h option it requests a device, target, bus or host reset
The ability to reset a SCSI target (often called a "hard reset" at the
transport level) was added in linux kernel 2.6.27 . Low level drivers
that support target reset hopefully reset a logical unit only when
given the device reset (i.e. -d) option. This should removed the
ambiguity of whether "device" meant LU or target that we have had in
In the linux kernel 2.6 series this utility can be called on sd, sr
(cd/dvd), st or sg device nodes; if the user has appropriate
In the linux kernel 2.4 series support for this utility first appeared
in lk 2.4.19 and could only be called on sg device nodes. Various
vendors made this capability available in their kernels prior to lk
-b attempt a SCSI bus reset. This would normally be tried if the
device reset (i.e. option -d) was not successful.
-d attempt a SCSI device reset. If the device seems stuck, this is
the first reset that should be tried. This assumes the linux
scsi mid level error handler is not already in the process of
-h attempt a host adapter reset. This would normally be tried if
both device reset (i.e. option -d) and bus reset (i.e. option
-b) were not successful.
-t attempt a SCSI target reset. This assumes the linux scsi mid
level error handler is not already in the process of resetting
the target that contains the given DEVICE.
-V prints the version string then exits.
The error recovery code within the linux kernel when faced with a SCSI
command timing out and no response from the device (LU), first 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. Users of this utility should check whether such
a recovery is already underway before trying to reset with this
utility. The "device,target,bus,host" order is also recommended (i.e.
first start with the smallest hammer). The above is a generalization
and exact details will vary depending on the transport and the low
level driver concerned.
SAM-4 defines 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. A LU reset and an I_T nexus reset can be
requested via task management function (and support for LU reset is
mandatory). In Linux the SCSI subsystem leaves it up to the low level
drivers as to whether a "device reset" is only for the addressed LU or
all the LUs in the device that contains the addressed LU (i.e. a target
reset). The additional of the target reset (i.e. option -t) should give
more control in this area. The "bus reset" is a transport reset and
may be a dummy operation, depending on the transport. 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 (or tasks as they
are called in SAM-4) 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.
Several transports still support that function and many associated
linux low level drivers map the -t option to it.
Written by Douglas Gilbert.
Copyright © 1999-2009 Douglas Gilbert
This software is distributed under the GPL version 2. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR