Kernel Functions for Drivers scsi_reset(9F)
NAME
scsi_reset - reset a SCSI bus or target
SYNOPSIS
#include
int scsi_reset(struct scsi_address *ap, int level);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).PARAMETERS
ap Pointer to the scsi_address structure.
level The level of reset required.DESCRIPTION
The scsi_reset() function asks the host adapter driver to
reset the SCSI bus or a SCSI target as specified by level.If level equals RESET_ALL, the SCSI bus is reset. If it
equals RESET_TARGET, ap is used to determine the target to
be reset. If it equals RESET_LUN, ap is used to determine
the logical unit to be reset.When given the RESET_LUN level, scsi_reset() can return
failure if the LOGICAL UNIT RESET message is not supported by the target device, or if the underlying HBA driver doesnot implement the ability to issue a LOGICAL UNIT RESET mes-
sage.Note that, at the point when scsi_reset() resets the logical
unit (case RESET_LUN), or the target (case RESET_TARGET), or
the bus (case RESET_ALL), there might be one or more command
packets outstanding. That is, packets have been passed toscsi_transport(), and queued or possibly transported, but
the commands have not been completed and the target comple-
tion routine has not been called for those packets.The successful call to scsi_reset() has the side effect that
any such commands currently outstanding are aborted, atwhich point the packets are marked with pkt_reason set to
CMD_RESET, and the appropriate bit -- either STAT_BUS_RESET
or STAT_DEV_RESET -- is set in pkt_statistics. Once thus
appropriately marked, the aborted command packets are passedSunOS 5.11 Last change: 16 Jan 2006 1
Kernel Functions for Drivers scsi_reset(9F)
to the target driver command completion routine. Also note that, at the moment that a thread executingscsi_reset() actually resets the target or the bus, it is
possible that a second thread may have already calledscsi_transport(), but not yet queued or transported its com-
mand. In this case the HBA will not yet have received the second thread's packet and this packet will not be aborted.RETURN VALUES
The scsi_reset() function returns:
1 Upon success. 0 Upon failure.CONTEXT
The scsi_reset() function can be called from user, inter-
rupt, or kernel context.SEE ALSO
tran_reset(9E), tran_reset_notify(9E), scsi_abort(9F)
Writing Device DriversSunOS 5.11 Last change: 16 Jan 2006 2