This value is used to timeout the given command. The units of this
value are milliseconds. The time being measured is from when a command
is sent until when sg is informed the request has been completed. A
following read() can take as long as the user likes. Timeouts are best
avoided, especially if SCSI bus resets will adversely effect other
devices on that SCSI bus. When the timeout expires, the SCSI mid level
attempts error recovery. Error recovery completes when the first action
in the following list is successful. Note that a more extreme measure
is being taken at each step.
the SCSI command that has timed out is aborted
a SCSI device reset is attempted
a SCSI bus reset is attempted. Note this may have an adverse effect on
other devices sharing that SCSI bus.
a SCSI host (bus adapter) reset is attempted. This is an attempt to
re-initialize the adapter card associated with the SCSI device that
has the timed out command.
If all these fail then the device may be set "offline" which means that
it is no longer accessible (except by this driver when open()-ed
O_NONBLOCK) until the machine is rebooted. Offline devices still
appear in the cat /proc/scsi/scsi
last column of the cat /proc/scsi/sg/devices
listing shows the online/offline status of a device ("1" means online
while "0" is offline). The exact status returned depends on which
level of error recovery succeeded. Most likely the 'host_status' will be
set to DID_ABORT or DID_RESET.
The two error statuses containing the word "TIME(_)OUT" are typically
_not_ related to a command timing out. DID_TIME_OUT in the 'host_status'
usually means an (unexpected) device selection timeout. DRIVER_TIMEOUT in
the 'driver_status' byte means the SCSI adapter is unable to control the
devices on its SCSI bus (and has given up).
The type of timeout is unsigned int (and it represents milliseconds).