blob: 7ec309c09e1b2cccb9cb9fdc8e808292882d8e36 [file] [log] [blame]
.TH SG_RESET "8" "October 2014" "sg3_utils\-1.40" SG3_UTILS
.SH NAME
sg_reset \- sends SCSI device, target, bus or host reset; or checks reset
state
.SH SYNOPSIS
.B sg_reset
[\fI\-\-bus\fR] [\fI\-\-device\fR] [\fI\-\-help\fR] [\fI\-\-host\fR]
[\fI\-\-no-esc\fR] [\fI\-\-target\fR] [\fI\-\-verbose\fR] [\fI\-\-version\fR]
\fIDEVICE\fR
.SH DESCRIPTION
.\" Add any additional description here
.PP
The sg_reset utility with no options (just a \fIDEVICE\fR) reports on the
reset state (e.g. if a reset is underway) of the \fIDEVICE\fR. When given
a \fI\-\-device\fR, \fI\-\-target\fR, \fI\-\-bus\fR or \fI\-\-host\fR
option it requests a device, target, bus or host reset respectively.
.PP
A device reset is applied to the Logical Unit (LU) corresponding to
\fIDEVICE\fR. It is most likely implemented by a Low level Driver (LLD)
in Linux as a LOGICAL UNIT RESET task management function.
.PP
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).
.PP
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.
.PP
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 \fIDEVICE\fR, will do such a check.
.SH OPTIONS
.TP
\fB\-b\fR, \fB\-\-bus\fR
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 \fIDEVICE\fR path.
.TP
\fB\-d\fR, \fB\-\-device\fR
attempt a SCSI device reset. This would typically involve sending a LOGICAL
UNIT RESET task management function to \fIDEVICE\fR.
.TP
\fB\-h\fR, \fB\-\-help\fR
print the usage message then exit.
.TP
\fB\-H\fR, \fB\-\-host\fR
attempt a host reset. The "host" in this context is often called
a Host Bus Adapter (HBA) and contains one or more SCSI initiators.
.TP
\fB\-N\fR, \fB\-\-no\-esc\fR
without this option, if a device reset (\fI\-\-device\fR) fails then it
will escalate to a target reset. And if a target reset (\fI\-\-target\fR)
fails then it will escalate to a bus reset. And if a bus
reset (\fI\-\-bus\fR) fails then it will escalate to a host reset. With this
option only the requested reset is attempted. An alternate option name of
\fI\-\-no-escalate\fR is also accepted.
.TP
\fB\-t\fR, \fB\-\-target\fR
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 \fIDEVICE\fR There may be a transport action that is equivalent (e.g.
in SAS a hard reset on the link that contains the target).
.TP
\fB\-v\fR, \fB\-\-verbose\fR
increase the degree of verbosity (debug messages).
.TP
\fB\-V\fR, \fB\-\-version\fR
prints the version string then exits.
.SH NOTES
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 \fI\-\-no-esc\fR option attempts to stop. In
large storage configurations the escalation may be (very) undesirable.
.PP
This utility calls the SG_SCSI_RESET ioctl and as of lk 3.10.7 the
\fI\-\-no-esc\fR option is not supported. Patches to implement this
functionality may be accepted in lk 3.18 or 3.19 .
.PP
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 \fIDEVICE\fR. Note that a "host reset" and a "bus reset" may cause
collateral damage.
.PP
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.
.PP
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.
.PP
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.
.PP
Prior to version 0.57 of this utility the command line had short options
only (e.g. \fI\-d\fR but not \fI\-\-device\fR). Also \fI\-h\fR invoked a host
reset while in the current version \fI\-h\fR is equivalent to \fI\-\-help\fR
and both \fI\-H\fR and \fI\-\-host\fR invoke a host reset. For backward
compatibility define the environment variable SG3_UTILS_OLD_OPTS or
SG_RESET_OLD_OPTS . In this case \fI\-h\fR will invoke a host reset and the
output will be verbose as it was previously (equivalent to using the
\fI\-\-verbose\fR option now).
For example:
.PP
SG_RESET_OLD_OPTS=1 sg_reset -h /dev/sg1
.br
sg_reset: starting host reset
.br
sg_reset: completed host reset
.SH AUTHORS
Written by Douglas Gilbert.
.SH COPYRIGHT
Copyright \(co 1999\-2014 Douglas Gilbert
.br
This software is distributed under the GPL version 2. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.