SCSI_STATUS(9S) Data Structures for Drivers SCSI_STATUS(9S)
scsi_status - SCSI status structure
#include <sys/scsi/scsi.h>
illumos DDI specific (illumos DDI)
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.
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.
scsi_ifgetcap(9F), scsi_init_pkt(9F), scsi_extended_sense(9S),
scsi_pkt(9S)
Writing Device Drivers
August 30, 1995 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)