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

NAME


scsi_extended_sense - SCSI extended sense structure

SYNOPSIS


#include <sys/scsi/scsi.h>


INTERFACE LEVEL


illumos DDI specific (illumos DDI).

DESCRIPTION


The scsi_extended_sense structure for error codes 0x70 (current errors)
and 0x71 (deferred errors) is returned on a successful REQUEST SENSE
command. SCSI-2 compliant targets are required to return at least the
first 18 bytes of this structure. This structure is part of
scsi_device(9S) structure.

STRUCTURE MEMBERS


uchar_t es_valid :1; /* Sense data is valid */
uchar_t es_class :3; /* Error Class- fixed at 0x7 */
uchar_t es_code :4; /* Vendor Unique error code */
uchar_t es_segnum; /* Segment number: for COPY cmd only */
uchar_t es_filmk :1; /* File Mark Detected */
uchar_t es_eom :1; /* End of Media */
uchar_t es_ili :1; /* Incorrect Length Indicator */
uchar_t es_key :4; /* Sense key */
uchar_t es_info_1; /* Information byte 1 */
uchar_t es_info_2; /* Information byte 2 */
uchar_t es_info_3; /* Information byte 3 */
uchar_t es_info_4; /* Information byte 4 */
uchar_t es_add_len; /* Number of additional bytes */
uchar_t es_cmd_info[4]; /* Command specific information */
uchar_t es_add_code; /* Additional Sense Code */
uchar_t es_qual_code; /* Additional Sense Code Qualifier */
uchar_t es_fru_code; /* Field Replaceable Unit Code */
uchar_t es_skey_specific[3]; /* Sense Key Specific information */


es_valid, if set, indicates that the information field contains valid
information.


es_class should be 0x7.


es_code is either 0x0 or 0x1.


es_segnum contains the number of the current segment descriptor if the
REQUEST SENSE command is in response to a COPY, COMPARE, and COPY AND
VERIFY command.


es_filmk, if set, indicates that the current command had read a file mark
or set mark (sequential access devices only).


es_eom, if set, indicates that an end-of-medium condition exists
(sequential access and printer devices only).


es_ili, if set, indicates that the requested logical block length did not
match the logical block length of the data on the medium.


es_key indicates generic information describing an error or exception
condition. The following sense keys are defined:

KEY_NO_SENSE

Indicates that there is no specific sense key information to be
reported.


KEY_RECOVERABLE_ERROR

Indicates that the last command completed successfully with some
recovery action performed by the target.


KEY_NOT_READY

Indicates that the logical unit addressed cannot be accessed.


KEY_MEDIUM_ERROR

Indicates that the command terminated with a non-recovered error
condition that was probably caused by a flaw on the medium or an
error in the recorded data.


KEY_HARDWARE_ERROR

Indicates that the target detected a non-recoverable hardware failure
while performing the command or during a self test.


KEY_ILLEGAL_REQUEST

Indicates that there was an illegal parameter in the CDB or in the
additional parameters supplied as data for some commands.


KEY_UNIT_ATTENTION

Indicates that the removable medium might have been changed or the
target has been reset.


KEY_WRITE_PROTECT/KEY_DATA_PROTECT

Indicates that a command that reads or writes the medium was
attempted on a block that is protected from this operation.


KEY_BLANK_CHECK

Indicates that a write-once device or a sequential access device
encountered blank medium or format-defined end-of-data indication
while reading or a write-once device encountered a non-blank medium
while writing.


KEY_VENDOR_UNIQUE

This sense key is available for reporting vendor-specific conditions.


KEY_COPY_ABORTED

Indicates that a COPY, COMPARE, and COPY AND VERIFY command was
aborted.


KEY_ABORTED_COMMAND

Indicates that the target aborted the command.


KEY_EQUAL

Indicates that a SEARCH DATA command has satisfied an equal
comparison.


KEY_VOLUME_OVERFLOW

Indicates that a buffered peripheral device has reached the end-of-
partition and data might remain in the buffer that has not been
written to the medium.


KEY_MISCOMPARE

Indicates that the source data did not match the data read from the
medium.


KEY_RESERVE

Indicates that the target is currently reserved by a different
initiator.


es_info_{1,2,3,4} is device-type or command specific.


es_add_len indicates the number of additional sense bytes to follow.


es_cmd_info contains information that depends on the command that was
executed.


es_add_code (ASC) indicates further information related to the error or
exception condition reported in the sense key field.


es_qual_code (ASCQ) indicates detailed information related to the
additional sense code.


es_fru_code (FRU) indicates a device-specific mechanism to unit that has
failed.


es_skey_specific is defined when the value of the sense-key specific
valid bit (bit 7) is 1. This field is reserved for sense keys not defined
above.

SEE ALSO


scsi_device(9S)


ANSI Small Computer System Interface-2 (SCSI-2)


Writing Device Drivers

August 30, 1995 SCSI_EXTENDED_SENSE(9S)