SCSI_STATUS(9S) Data Structures for Drivers SCSI_STATUS(9S)


NAME


scsi_status - SCSI status structure

SYNOPSIS


#include <sys/scsi/scsi.h>


INTERFACE LEVEL


illumos DDI specific (illumos DDI)

DESCRIPTION


The SCSI-2standard defines a status byte that is normally sent by the
target to the initiator during the status phase at the completion of each
command.

STRUCTURE MEMBERS


uchar sts_scsi2 :1; /* SCSI-2 modifier bit */
uchar sts_is :1; /* intermediate status sent */
uchar sts_busy :1; /* device busy or reserved */
uchar sts_cm :1; /* condition met */
ucha sts_chk :1; /* check condition */


sts_chk indicates that a contingent allegiance condition has occurred.


sts_cm is returned whenever the requested operation is satisfied


sts_busy indicates that the target is busy. This status is returned
whenever a target is unable to accept a command from an otherwise
acceptable initiator (that is, no reservation conflicts). The recommended
initiator recovery action is to issue the command again later.


sts_is is returned for every successfully completed command in a series
of linked commands (except the last command), unless the command is
terminated with a check condition status, reservation conflict, or
command terminated status. Note that host bus adapter drivers may not
support linked commands (see scsi_ifsetcap(9F)). If sts_is and sts_busy
are both set, then a reservation conflict has occurred.


sts_scsi2 is the SCSI-2 modifier bit. If sts_scsi2 and sts_chk are both
set, this indicates a command terminated status. If sts_scsi2 and
sts_busy are both set, this indicates that the command queue in the
target is full.


For accessing the status as a byte, the following values are appropriate:

STATUS_GOOD

This status indicates that the target has successfully completed the
command.


STATUS_CHECK

This status indicates that a contingent allegiance condition has
occurred.


STATUS_MET

This status is returned when the requested operations are satisfied.


STATUS_BUSY

This status indicates that the target is busy.


STATUS_INTERMEDIATE

This status is returned for every successfully completed command in a
series of linked commands.


STATUS_SCSI2

This is the SCSI-2 modifier bit.


STATUS_INTERMEDIATE_MET

This status is a combination of STATUS_MET and STATUS_INTERMEDIATE.


STATUS_RESERVATION_CONFLICT

This status is a combination of STATUS_INTERMEDIATE and STATUS_BUSY,
and it is returned whenever an initiator attempts to access a logical
unit or an extent within a logical unit is reserved.


STATUS_TERMINATED

This status is a combination of STATUS_SCSI2 and STATUS_CHECK, and it
is returned whenever the target terminates the current I/O process
after receiving a terminate I/O process message.


STATUS_QFULL

This status is a combination of STATUS_SCSI2 and STATUS_BUSY, and it
is returned when the command queue in the target is full.


SEE ALSO


scsi_ifgetcap(9F), scsi_init_pkt(9F), scsi_extended_sense(9S),
scsi_pkt(9S)


Writing Device Drivers


August 30, 1995 SCSI_STATUS(9S)