Merge branch 'master' into squeeze
[debian/amanda] / ndmp-src / scsiconst.h
diff --git a/ndmp-src/scsiconst.h b/ndmp-src/scsiconst.h
new file mode 100644 (file)
index 0000000..c410d9b
--- /dev/null
@@ -0,0 +1,517 @@
+/*
+ * Copyright (c) 1998,1999,2000
+ *     Traakan, Inc., Los Altos, CA
+ *     All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice unmodified, this list of conditions, and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Project:  NDMJOB
+ * Ident:    $Id: $
+ *
+ * Description:
+ *
+ */
+
+
+/*
+ * WORKING                                                 X3T9.2
+ * DRAFT                                                   Project 375D
+ */
+
+/*
+                      Table D.2 - SCSI-2 Operation Codes
+=============================================================================
+           D - DIRECT ACCESS DEVICE                       Device column key
+           .T - SEQUENTIAL ACCESS DEVICE                  M = Mandatory
+           . L - PRINTER DEVICE                           O = Optional
+           .  P - PROCESSOR DEVICE                        V = Vendor-specific
+           .  .W - WRITE ONCE READ MULTIPLE DEVICE        R = Reserved
+           .  . R - READ ONLY (CD-ROM) DEVICE
+           .  .  S - SCANNER DEVICE
+           .  .  .O - OPTICAL MEMORY DEVICE
+           .  .  . M - MEDIA CHANGER DEVICE
+           .  .  .  C - COMMUNICATION DEVICE
+           .  .  .  .
+           DTLPWRSOMC
+*/
+
+                                               /*OP       DTLPWRSOMC */
+#define SCSI_CMD_TEST_UNIT_READY               0x00    /* MMMMMMMMMM */
+#define SCSI_CMD_REWIND                                0x01    /* _M________ */
+#define SCSI_CMD_REZERO_UNIT                   0x01    /* O_V_OO_OO_ */
+#define SCSI_CMD_REQUEST_SENSE                 0x03    /* MMMMMMMMMM */
+#define SCSI_CMD_FORMAT                                0x04    /* __O_______ */
+#define SCSI_CMD_FORMAT_UNIT                   0x04    /* M______O__ */
+#define SCSI_CMD_READ_BLOCK_LIMITS             0x05    /* VMVVVV__V_ */
+#define SCSI_CMD_INITIALIZE_ELEMENT_STATUS     0x07    /* ________O_ */
+#define SCSI_CMD_REASSIGN_BLOCKS               0x07    /* OVV_O__OV_ */
+#define SCSI_CMD_GET_MESSAGE_6                 0x08    /* _________M */
+#define SCSI_CMD_READ_6                                0x08    /* OMV_OO_OV_ */
+#define SCSI_CMD_RECEIVE                       0x08    /* ___O______ */
+#define SCSI_CMD_PRINT                         0x0A    /* __M_______ */
+#define SCSI_CMD_SEND_MESSAGE_6                        0x0A    /* _________M */
+#define SCSI_CMD_SEND_6                                0x0A    /* ___M______ */
+#define SCSI_CMD_WRITE_6                       0x0A    /* OM__O__OV_ */
+#define SCSI_CMD_SEEK_6                                0x0B    /* O___OO_OV_ */
+#define SCSI_CMD_SLEW_AND_PRINT                        0x0B    /* __O_______ */
+#define SCSI_CMD_READ_REVERSE                  0x0F    /* VOVVVV__V_ */
+#define SCSI_CMD_SYNCHRONIZE_BUFFER            0x10    /* __O_O_____ */
+#define SCSI_CMD_WRITE_FILEMARKS               0x10    /* VM_VVV____ */
+#define SCSI_CMD_SPACE                         0x11    /* VMVVVV____ */
+#define SCSI_CMD_INQUIRY                       0x12    /* MMMMMMMMMM */
+#define SCSI_CMD_VERIFY_6                      0x13    /* VOVVVV____ */
+#define SCSI_CMD_RECOVER_BUFFERED_DATA         0x14    /* VOOVVV____ */
+#define SCSI_CMD_MODE_SELECT_6                 0x15    /* OMO_OOOOOO */
+#define SCSI_CMD_RESERVE                       0x16    /* M___MM_MO_ */
+#define SCSI_CMD_RESERVE_UNIT                  0x16    /* _MM___M___ */
+#define SCSI_CMD_RELEASE                       0x17    /* M___MM_MO_ */
+#define SCSI_CMD_RELEASE_UNIT                  0x17    /* _MM___M___ */
+#define SCSI_CMD_COPY                          0x18    /* OOOOOOOO__ */
+#define SCSI_CMD_ERASE                         0x19    /* VMVVVV____ */
+#define SCSI_CMD_MODE_SENSE_6                  0x1A    /* OMO_OOOOOO */
+#define SCSI_CMD_LOAD_UNLOAD                   0x1B    /* _O________ */
+#define SCSI_CMD_SCAN                          0x1B    /* ______O___ */
+#define SCSI_CMD_STOP_PRINT                    0x1B    /* __O_______ */
+#define SCSI_CMD_STOP_START_UNIT               0x1B    /* O___OO_O__ */
+#define SCSI_CMD_RECEIVE_DIAGNOSTIC_RESULTS    0x1C    /* OOOOOOOOOO */
+#define SCSI_CMD_SEND_DIAGNOSTIC               0x1D    /* MMMMMMMMMM */
+#define SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL  0x1E    /* OO__OO_OO_ */
+#define SCSI_CMD_SET_WINDOW                    0x24    /* V___VVM___ */
+#define SCSI_CMD_GET_WINDOW                    0x25    /* ______O___ */
+#define SCSI_CMD_READ_CAPACITY                 0x25    /* M___M__M__ */
+#define SCSI_CMD_READ_CD_ROM_CAPACITY          0x25    /* _____M____ */
+#define SCSI_CMD_GET_MESSAGE_10                        0x28    /* _________O */
+#define SCSI_CMD_READ_10                       0x28    /* M___MMMM__ */
+#define SCSI_CMD_READ_GENERATION               0x29    /* V___VV_O__ */
+#define SCSI_CMD_SEND_MESSAGE_10               0x2A    /* _________O */
+#define SCSI_CMD_SEND_10                       0x2A    /* ______O___ */
+#define SCSI_CMD_WRITE_10                      0x2A    /* O___M__M__ */
+#define SCSI_CMD_LOCATE                                0x2B    /* _O________ */
+#define SCSI_CMD_POSITION_TO_ELEMENT           0x2B    /* ________O_ */
+#define SCSI_CMD_SEEK_10                       0x2B    /* O___OO_O__ */
+#define SCSI_CMD_ERASE_10                      0x2C    /* V______O__ */
+#define SCSI_CMD_READ_UPDATED_BLOCK            0x2D    /* V___O__O__ */
+#define SCSI_CMD_WRITE_AND_VERIFY_10           0x2E    /* O___O__O__ */
+#define SCSI_CMD_VERIFY_10                     0x2F    /* O___OO_O__ */
+#define SCSI_CMD_SEARCH_DATA_HIGH_10           0x30    /* O___OO_O__ */
+#define SCSI_CMD_OBJECT_POSITION               0x31    /* ______O___ */
+#define SCSI_CMD_SEARCH_DATA_EQUAL_10          0x31    /* O___OO_O__ */
+#define SCSI_CMD_SEARCH_DATA_LOW_10            0x32    /* O___OO_O__ */
+#define SCSI_CMD_SET_LIMITS_10                 0x33    /* O___OO_O__ */
+#define SCSI_CMD_GET_DATA_BUFFER_STATUS                0x34    /* ______O___ */
+#define SCSI_CMD_PRE_FETCH                     0x34    /* O___OO_O__ */
+#define SCSI_CMD_READ_POSITION                 0x34    /* _O________ */
+#define SCSI_CMD_SYNCHRONIZE_CACHE             0x35    /* O___OO_O__ */
+#define SCSI_CMD_LOCK_UNLOCK_CACHE             0x36    /* O___OO_O__ */
+#define SCSI_CMD_READ_DEFECT_DATA_10           0x37    /* O______O__ */
+#define SCSI_CMD_MEDIUM_SCAN                   0x38    /* ____O__O__ */
+#define SCSI_CMD_COMPARE                       0x39    /* OOOOOOOO__ */
+#define SCSI_CMD_COPY_AND_VERIFY               0x3A    /* OOOOOOOO__ */
+#define SCSI_CMD_WRITE_BUFFER                  0x3B    /* OOOOOOOOOO */
+#define SCSI_CMD_READ_BUFFER                   0x3C    /* OOOOOOOOOO */
+#define SCSI_CMD_UPDATE_BLOCK                  0x3D    /* ____O__O__ */
+#define SCSI_CMD_READ_LONG                     0x3E    /* O___OO_O__ */
+#define SCSI_CMD_WRITE_LONG                    0x3F    /* O___O__O__ */
+#define SCSI_CMD_CHANGE_DEFINITION             0x40    /* OOOOOOOOOO */
+#define SCSI_CMD_WRITE_SAME                    0x41    /* O_________ */
+#define SCSI_CMD_READ_SUB_CHANNEL              0x42    /* _____O____ */
+#define SCSI_CMD_READ_TOC                      0x43    /* _____O____ */
+#define SCSI_CMD_READ_HEADER                   0x44    /* _____O____ */
+#define SCSI_CMD_PLAY_AUDIO_10                 0x45    /* _____O____ */
+#define SCSI_CMD_PLAY_AUDIO_MSF                        0x47    /* _____O____ */
+#define SCSI_CMD_PLAY_AUDIO_TRACK_INDEX                0x48    /* _____O____ */
+#define SCSI_CMD_PLAY_TRACK_RELATIVE_10                0x49    /* _____O____ */
+#define SCSI_CMD_PAUSE_RESUME                  0x4B    /* _____O____ */
+#define SCSI_CMD_LOG_SELECT                    0x4C    /* OOOOOOOOOO */
+#define SCSI_CMD_LOG_SENSE                     0x4D    /* OOOOOOOOOO */
+#define SCSI_CMD_MODE_SELECT_10                        0x55    /* OOO_OOOOOO */
+#define SCSI_CMD_MODE_SENSE_10                 0x5A    /* OOO_OOOOOO */
+#define SCSI_CMD_MOVE_MEDIUM                   0xA5    /* ________M_ */
+#define SCSI_CMD_PLAY_AUDIO_12                 0xA5    /* _____O____ */
+#define SCSI_CMD_EXCHANGE_MEDIUM               0xA6    /* ________O_ */
+#define SCSI_CMD_GET_MESSAGE_12                        0xA8    /* _________O */
+#define SCSI_CMD_READ_12                       0xA8    /* ____OO_O__ */
+#define SCSI_CMD_PLAY_TRACK_RELATIVE_12                0xA9    /* _____O____ */
+#define SCSI_CMD_SEND_MESSAGE_12               0xAA    /* _________O */
+#define SCSI_CMD_WRITE_12                      0xAA    /* ____O__O__ */
+#define SCSI_CMD_ERASE_12                      0xAC    /* _______O__ */
+#define SCSI_CMD_WRITE_AND_VERIFY_12           0xAE    /* ____O__O__ */
+#define SCSI_CMD_VERIFY_12                     0xAF    /* ____OO_O__ */
+#define SCSI_CMD_SEARCH_DATA_HIGH_12           0xB0    /* ____OO_O__ */
+#define SCSI_CMD_SEARCH_DATA_EQUAL_12          0xB1    /* ____OO_O__ */
+#define SCSI_CMD_SEARCH_DATA_LOW_12            0xB2    /* ____OO_O__ */
+#define SCSI_CMD_SET_LIMITS_12                 0xB3    /* ____OO_O__ */
+#define SCSI_CMD_REQUEST_VOLUME_ELEMENT_ADDRESS        0xB5    /* ________O_ */
+#define SCSI_CMD_SEND_VOLUME_TAG               0xB6    /* ________O_ */
+#define SCSI_CMD_READ_DEFECT_DATA_12           0xB7    /* _______O__ */
+#define SCSI_CMD_READ_ELEMENT_STATUS           0xB8    /* ________O_ */
+
+
+/*
+ *                             Table 26 - Status byte
+ * +========-========-========-========-========-========-========-========+
+ * |   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
+ * |=================+============================================+========|
+ * |     Reserved    |               Status byte code             |Reserved|
+ * +=======================================================================+
+ *
+ *
+ *                          Table 27 - Status byte code
+ * +==================================-==============================+
+ * |    Bits of status byte           |  Status                      |
+ * |----------------------------------|                              |
+ * |   7 | 6 | 5 | 4 | 3 | 2 | 1 | 0  |                              |
+ * |-----+---+---+---+---+---+---+----+------------------------------|
+ * |   R | R | 0 | 0 | 0 | 0 | 0 | R  |  GOOD                        |
+ * |   R | R | 0 | 0 | 0 | 0 | 1 | R  |  CHECK CONDITION             |
+ * |   R | R | 0 | 0 | 0 | 1 | 0 | R  |  CONDITION MET               |
+ * |   R | R | 0 | 0 | 1 | 0 | 0 | R  |  BUSY                        |
+ * |   R | R | 0 | 1 | 0 | 0 | 0 | R  |  INTERMEDIATE                |
+ * |   R | R | 0 | 1 | 0 | 1 | 0 | R  |  INTERMEDIATE-CONDITION MET  |
+ * |   R | R | 0 | 1 | 1 | 0 | 0 | R  |  RESERVATION CONFLICT        |
+ * |   R | R | 1 | 0 | 0 | 0 | 1 | R  |  COMMAND TERMINATED          |
+ * |   R | R | 1 | 0 | 1 | 0 | 0 | R  |  QUEUE FULL                  |
+ * |----------------------------------|                              |
+ * |           All other codes        |  Reserved                    |
+ * |-----------------------------------------------------------------|
+ * |  Key: R = Reserved bit                                          |
+ * +=================================================================+
+ *
+ * A definition of the status byte codes is given below.
+ *
+ * 7.3.1 GOOD:  This status indicates that the target has successfully
+ * completed the command.
+ *
+ * 7.3.2 CHECK CONDITION:  This status indicates that a contingent allegiance
+ * condition has occurred (see 7.6).
+ *
+ * 7.3.3 CONDITION MET:  This status or INTERMEDIATE-CONDITION MET is
+ * returned whenever the requested operation is satisfied (see the SEARCH
+ * DATA and PREFETCH commands).
+ *
+ * 7.3.4 BUSY:  This status indicates that the target is busy.  This status
+ * shall be returned whenever a target is unable to accept a command from an
+ * otherwise acceptable initiator (i.e. no reservation conflicts).  The
+ * recommended initiator recovery action is to issue the command again at a
+ * later time.
+ *
+ * 7.3.5 INTERMEDIATE:  This status or INTERMEDIATE-CONDITION MET shall be
+ * returned for every successfully completed command in a series of linked
+ * commands (except the last command), unless the command is terminated with
+ * CHECK CONDITION, RESERVATION CONFLICT, or COMMAND TERMINATED status.  If
+ * INTERMEDIATE or INTERMEDIATE-CONDITION MET status is not returned, the
+ * series of linked commands is terminated and the I/O process is ended.
+ *
+ * 7.3.6 INTERMEDIATE-CONDITION MET:  This status is the combination of the
+ * CONDITION MET and INTERMEDIATE statuses.
+ *
+ * 7.3.7 RESERVATION CONFLICT:  This status shall be returned whenever an
+ * initiator attempts to access a logical unit or an extent within a logical
+ * unit that is reserved with a conflicting reservation type for another SCSI
+ * device (see the RESERVE and RESERVE UNIT commands).  The recommended
+ * initiator recovery action is to issue the command again at a later time.
+ *
+ * 7.3.8 COMMAND TERMINATED:  This status shall be returned whenever the
+ * target terminates the current I/O process after receiving a TERMINATE I/O
+ * PROCESS message (see 6.6.22).  This status also indicates that a
+ * contingent allegiance condition has occurred (see 7.6).
+ *
+ * 7.3.9 QUEUE FULL:  This status shall be implemented if tagged queuing is
+ * implemented.  This status is returned when a SIMPLE QUEUE TAG, ORDERED
+ * QUEUE TAG, or HEAD OF QUEUE TAG message is received and the command queue
+ * is full.  The I/O process is not placed in the command queue.
+ */
+/* Standard SCSI status byte values. */
+#define SCSI_STATUS_MASK                       0x3E
+#define SCSI_STATUS_BYTE_CODE(X)               ((X)&SCSI_STATUS_MASK)
+#define SCSI_STATUS_GOOD                       0x00
+#define SCSI_STATUS_CHECK_CONDITION            0x02
+#define SCSI_STATUS_CONDITION_MET              0x04
+#define SCSI_STATUS_BUSY                       0x08
+#define SCSI_STATUS_INTERMEDIATE_GOOD          0x10
+#define SCSI_STATUS_INTERMEDIATE_MET           0x14
+#define SCSI_STATUS_RESERVATION_CONFLICT       0x18
+#define SCSI_STATUS_COMMAND_TERMINATED         0x22
+#define SCSI_STATUS_QUEUE_FULL                 0x28
+
+
+#define SCSI_SENSE_VALID_BIT           0x80
+#define SCSI_SENSE_FILEMARK_BIT                0x80
+#define SCSI_SENSE_EOM_BIT             0x40
+#define SCSI_SENSE_ILI_BIT             0x20
+#define SCSI_SENSE_SENSE_KEY_MASK      0x0F
+
+/*
+8.2.14.3 Sense key and sense code definitions
+*/
+#define SCSI_SENSE_KEY_NO_SENSE                0x0
+#define SCSI_SENSE_KEY_RECOVERED_ERROR 0x1
+#define SCSI_SENSE_KEY_NOT_READY       0x2
+#define SCSI_SENSE_KEY_MEDIUM_ERROR    0x3
+#define SCSI_SENSE_KEY_HARDWARE_ERROR  0x4
+#define SCSI_SENSE_KEY_ILLEGAL_REQUEST 0x5
+#define SCSI_SENSE_KEY_UNIT_ATTENTION  0x6
+#define SCSI_SENSE_KEY_DATA_PROTECT    0x7
+#define SCSI_SENSE_KEY_BLANK_CHECK     0x8
+#define SCSI_SENSE_KEY_VENDOR_SPECIFIC 0x9
+#define SCSI_SENSE_KEY_COPY_ABORTED    0xA
+#define SCSI_SENSE_KEY_ABORTED_COMMAND 0xB
+#define SCSI_SENSE_KEY_EQUAL           0xC
+#define SCSI_SENSE_KEY_VOLUME_OVERFLOW 0xD
+#define SCSI_SENSE_KEY_MISCOMPARE      0xE
+#define SCSI_SENSE_KEY_RESERVED                0xF
+
+
+
+/*
+================================================================
+           D - DIRECT ACCESS DEVICE
+           .T - SEQUENTIAL ACCESS DEVICE
+           . L - PRINTER DEVICE
+           .  P - PROCESSOR DEVICE
+           .  .W - WRITE ONCE READ MULTIPLE DEVICE
+           .  . R - READ ONLY (CD-ROM) DEVICE
+           .  .  S - SCANNER DEVICE
+           .  .  .O - OPTICAL MEMORY DEVICE
+           .  .  . M - MEDIA CHANGER DEVICE
+           .  .  .  C - COMMUNICATION DEVICE
+           .  .  .  .
+           DTLPWRSOMC
+*/
+
+#ifndef _ASQ
+#define _ASQ(ASC,ASCQ) (((ASC)<<8)|(ASCQ))
+#endif
+
+#define ASQ_NO_ADDITIONAL_SENSE_INFORMATION            _ASQ(0x00,0x00) /* DTLPWRSOMC */
+#define ASQ_FILEMARK_DETECTED                          _ASQ(0x00,0x01) /* _T________ */
+#define ASQ_END_OF_PARTITION_OR_MEDIUM_DETECTED                _ASQ(0x00,0x02) /* _T____S___ */
+#define ASQ_SETMARK_DETECTED                           _ASQ(0x00,0x03) /* _T________ */
+#define ASQ_BEGINNING_OF_PARTITION_OR_MEDIUM_DETECTED  _ASQ(0x00,0x04) /* _T____S___ */
+#define ASQ_END_OF_DATA_DETECTED                       _ASQ(0x00,0x05) /* _T____S___ */
+#define ASQ_IO_PROCESS_TERMINATED                      _ASQ(0x00,0x06) /* DTLPWRSOMC */
+#define ASQ_AUDIO_PLAY_OPERATION_IN_PROGRESS           _ASQ(0x00,0x11) /* R_________ */
+#define ASQ_AUDIO_PLAY_OPERATION_PAUSED                        _ASQ(0x00,0x12) /* R_________ */
+#define ASQ_AUDIO_PLAY_OPERATION_SUCCESSFULLY_COMPLETED        _ASQ(0x00,0x13) /* R_________ */
+#define ASQ_AUDIO_PLAY_OPERATION_STOPPED_DUE_TO_ERROR  _ASQ(0x00,0x14) /* R_________ */
+#define ASQ_NO_CURRENT_AUDIO_STATUS_TO_RETURN          _ASQ(0x00,0x15) /* R_________ */
+#define ASQ_NO_INDEX_OR_SECTOR_SIGNAL                  _ASQ(0x01,0x00) /* DW__O_____ */
+#define ASQ_NO_SEEK_COMPLETE                           _ASQ(0x02,0x00) /* DWR_OM____ */
+#define ASQ_PERIPHERAL_DEVICE_WRITE_FAULT              _ASQ(0x03,0x00) /* DTL_W_SO__ */
+#define ASQ_NO_WRITE_CURRENT                           _ASQ(0x03,0x01) /* _T________ */
+#define ASQ_EXCESSIVE_WRITE_ERRORS                     _ASQ(0x03,0x02) /* _T________ */
+#define ASQ_LOGICAL_UNIT_NOT_READY_CAUSE_NOT_REPORTABLE        _ASQ(0x04,0x00) /* DTLPWRSOMC */
+#define ASQ_LOGICAL_UNIT_IS_IN_PROCESS_OF_BECOMING_READY \
+                                                       _ASQ(0x04,0x01) /* DTLPWRSOMC */
+#define ASQ_LOGICAL_UNIT_NOT_READY_INITIALIZING_REQUIRED \
+                                                       _ASQ(0x04,0x02) /* DTLPWRSOMC */
+#define ASQ_LOGICAL_UNIT_NOT_READY_MANUAL_INTERVENTION_REQUIRED \
+                                                       _ASQ(0x04,0x03) /* DTLPWRSOMC */
+#define ASQ_LOGICAL_UNIT_NOT_READY_FORMAT_IN_PROGRESS  _ASQ(0x04,0x04) /* DTL____O__ */
+#define ASQ_LOGICAL_UNIT_DOES_NOT_RESPOND_TO_SELECTION _ASQ(0x05,0x00) /* DTL_WRSOMC */
+#define ASQ_NO_REFERENCE_POSITION_FOUND                        _ASQ(0x06,0x00) /* DWR_OM__NO */
+#define ASQ_MULTIPLE_PERIPHERAL_DEVICES_SELECTED       _ASQ(0x07,0x00) /* DTL_WRSOM_ */
+#define ASQ_LOGICAL_UNIT_COMMUNICATION_FAILURE         _ASQ(0x08,0x00) /* DTL_WRSOMC */
+#define ASQ_LOGICAL_UNIT_COMMUNICATION_TIME_OUT                _ASQ(0x08,0x01) /* DTL_WRSOMC */
+#define ASQ_LOGICAL_UNIT_COMMUNICATION_PARITY_ERROR    _ASQ(0x08,0x02) /* DTL_WRSOMC */
+#define ASQ_TRACK_FOLLOWING_ERROR                      _ASQ(0x09,0x00) /* DT__WR_O__ */
+#define ASQ_TRACKING_SERVO_FAILURE                     _ASQ(0x09,0x01) /* ____WR_O__ */
+#define ASQ_FOCUS_SERVO_FAILURE                                _ASQ(0x09,0x02) /* ____WR_O__ */
+#define ASQ_SPINDLE_SERVO_FAILURE                      _ASQ(0x09,0x03) /* ____WR_O__ */
+#define ASQ_ERROR_LOG_OVERFLOW                         _ASQ(0x0A,0x00) /* DTLPWRSOMC */
+#define ASQ_WRITE_ERROR                                        _ASQ(0x0C,0x00) /* ___T_____S */
+#define ASQ_WRITE_ERROR_RECOVERED_WITH_AUTO_REALLOCATION \
+                                                       _ASQ(0x0C,0x01) /* D___W__O__ */
+#define ASQ_WRITE_ERROR_AUTO_REALLOCATION_FAILED       _ASQ(0x0C,0x02) /* D___W__O__ */
+#define ASQ_ID_CRC_OR_ECC_ERROR                                _ASQ(0x10,0x00) /* D___W__O__ */
+#define ASQ_UNRECOVERED_READ_ERROR                     _ASQ(0x11,0x00) /* DT__WRSO__ */
+#define ASQ_READ_RETRIES_EXHAUSTED                     _ASQ(0x11,0x01) /* DT__W_SO__ */
+#define ASQ_ERROR_TOO_LONG_TO_CORRECT                  _ASQ(0x11,0x02) /* DT__W_SO__ */
+#define ASQ_MULTIPLE_READ_ERRORS                       _ASQ(0x11,0x03) /* DT__W_SO__ */
+#define ASQ_UNRECOVERED_READ_ERROR_AUTO_REALLOCATE_FAILED \
+                                                       _ASQ(0x11,0x04) /* D___W__O__ */
+#define ASQ_L_EC_UNCORRECTABLE_ERROR                   _ASQ(0x11,0x05) /* ____WR_O__ */
+#define ASQ_CIRC_UNRECOVERED_ERROR                     _ASQ(0x11,0x06) /* ____WR_O__ */
+#define ASQ_DATA_RESYNCHRONIZATION_ERROR               _ASQ(0x11,0x07) /* ____W__O__ */
+#define ASQ_INCOMPLETE_BLOCK_READ                      _ASQ(0x11,0x08) /* _T________ */
+#define ASQ_NO_GAP_FOUND                               _ASQ(0x11,0x09) /* _T________ */
+#define ASQ_MISCORRECTED_ERROR                         _ASQ(0x11,0x0A) /* DT_____O__ */
+#define ASQ_UNRECOVERED_READ_ERROR_RECOMMEND_REASSIGNMENT \
+                                                       _ASQ(0x11,0x0B) /* D___W__O__ */
+#define ASQ_UNRECOVERED_READ_ERROR_RECOMMEND_REWRITE_THE_DATA \
+                                                       _ASQ(0x11,0x0C) /* D___W__O__ */
+#define ASQ_ADDRESS_MARK_NOT_FOUND_FOR_ID_FIELD                _ASQ(0x12,0x00) /* D___W__O__ */
+#define ASQ_ADDRESS_MARK_NOT_FOUND_FOR_DATA_FIELD      _ASQ(0x13,0x00) /* D___W__O__ */
+#define ASQ_RECORDED_ENTITY_NOT_FOUND                  _ASQ(0x14,0x00) /* DTL_WRSO__ */
+#define ASQ_RECORD_NOT_FOUND                           _ASQ(0x14,0x01) /* DT__WR_O__ */
+#define ASQ_FILEMARK_OR_SETMARK_NOT_FOUND              _ASQ(0x14,0x02) /* _T________ */
+#define ASQ_END_OF_DATA_NOT_FOUND                      _ASQ(0x14,0x03) /* _T________ */
+#define ASQ_BLOCK_SEQUENCE_ERROR                       _ASQ(0x14,0x04) /* _T________ */
+#define ASQ_RANDOM_POSITIONING_ERROR                   _ASQ(0x15,0x00) /* DTL_WRSOM_ */
+#define ASQ_MECHANICAL_POSITIONING_ERROR               _ASQ(0x15,0x01) /* DTL_WRSOM_ */
+#define ASQ_POSITIONING_ERROR_DETECTED_BY_READ_OF_MEDIUM \
+                                                       _ASQ(0x15,0x02) /* DT__WR_O__ */
+#define ASQ_DATA_SYNCHRONIZATION_MARK_ERROR            _ASQ(0x16,0x00) /* DW_____O__ */
+#define ASQ_RECOVERED_DATA_WITH_NO_ERROR_CORRECTION_APPLIED \
+                                                       _ASQ(0x17,0x00) /* DT__WRSO__ */
+#define ASQ_RECOVERED_DATA_WITH_RETRIES                        _ASQ(0x17,0x01) /* DT__WRSO__ */
+#define ASQ_RECOVERED_DATA_WITH_POSITIVE_HEAD_OFFSET   _ASQ(0x17,0x02) /* DT__WR_O__ */
+#define ASQ_RECOVERED_DATA_WITH_NEGATIVE_HEAD_OFFSET   _ASQ(0x17,0x03) /* DT__WR_O__ */
+#define ASQ_RECOVERED_DATA_WITH_RETRIES_ANDOR_CIRC_APPLIED \
+                                                       _ASQ(0x17,0x04) /* ____WR_O__ */
+#define ASQ_RECOVERED_DATA_USING_PREVIOUS_SECTOR_ID    _ASQ(0x17,0x05) /* D___WR_O__ */
+#define ASQ_RECOVERED_DATA_WITHOUT_ECC_DATA_AUTO_REALLOCATED \
+                                                       _ASQ(0x17,0x06) /* D___W__O__ */
+#define ASQ_RECOVERED_DATA_WITHOUT_ECC_RECOMMEND_REASSIGNMENT \
+                                                       _ASQ(0x17,0x07) /* D___W__O__ */
+#define ASQ_RECOVERED_DATA_WITHOUT_ECC_RECOMMEND_REWRITE \
+                                                       _ASQ(0x17,0x08) /* D___W__O__ */
+#define ASQ_RECOVERED_DATA_WITH_ERROR_CORRECTION_APPLIED \
+                                                       _ASQ(0x18,0x00) /* DT__WR_O__ */
+#define ASQ_RECOVERED_DATA_WITH_ERROR_CORRECTION_AND_RETRIES_APPLIED \
+                                                       _ASQ(0x18,0x01) /* D___WR_O__ */
+#define ASQ_RECOVERED_DATA_DATA_AUTO_REALLOCATED       _ASQ(0x18,0x02) /* D___WR_O__ */
+#define ASQ_RECOVERED_DATA_WITH_CIRC                   _ASQ(0x18,0x03) /* _____R____ */
+#define ASQ_RECOVERED_DATA_WITH_LEC                    _ASQ(0x18,0x04) /* _____R____ */
+#define ASQ_RECOVERED_DATA_RECOMMEND_REASSIGNMENT      _ASQ(0x18,0x05) /* D___WR_O__ */
+#define ASQ_RECOVERED_DATA_RECOMMEND_REWRITE           _ASQ(0x18,0x06) /* D___WR_O__ */
+#define ASQ_DEFECT_LIST_ERROR                          _ASQ(0x19,0x00) /* D______O__ */
+#define ASQ_DEFECT_LIST_NOT_AVAILABLE                  _ASQ(0x19,0x01) /* D______O__ */
+#define ASQ_DEFECT_LIST_ERROR_IN_PRIMARY_LIST          _ASQ(0x19,0x02) /* D______O__ */
+#define ASQ_DEFECT_LIST_ERROR_IN_GROWN_LIST            _ASQ(0x19,0x03) /* D______O__ */
+#define ASQ_PARAMETER_LIST_LENGTH_ERROR                        _ASQ(0x1A,0x00) /* DTLPWRSOMC */
+#define ASQ_SYNCHRONOUS_DATA_TRANSFER_ERROR            _ASQ(0x1B,0x00) /* DTLPWRSOMC */
+#define ASQ_DEFECT_LIST_NOT_FOUND                      _ASQ(0x1C,0x00) /* D______O__ */
+#define ASQ_PRIMARY_DEFECT_LIST_NOT_FOUND              _ASQ(0x1C,0x01) /* D______O__ */
+#define ASQ_GROWN_DEFECT_LIST_NOT_FOUND                        _ASQ(0x1C,0x02) /* D______O__ */
+#define ASQ_MISCOMPARE_DURING_VERIFY_OPERATION         _ASQ(0x1D,0x00) /* D___W__O__ */
+#define ASQ_RECOVERED_ID_WITH_ECC                      _ASQ(0x1E,0x00) /* D___W__O__ */
+#define ASQ_INVALID_COMMAND_OPERATION_CODE             _ASQ(0x20,0x00) /* DTLPWRSOMC */
+#define ASQ_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE         _ASQ(0x21,0x00) /* DT__WR_OM_ */
+#define ASQ_INVALID_ELEMENT_ADDRESS                    _ASQ(0x21,0x01) /* ________M_ */
+#define ASQ_ILLEGAL_FUNCTION                           _ASQ(0x22,0x00) /* D_________ */
+#define ASQ_INVALID_FIELD_IN_CDB                       _ASQ(0x24,0x00) /* DTLPWRSOMC */
+#define ASQ_LOGICAL_UNIT_NOT_SUPPORTED                 _ASQ(0x25,0x00) /* DTLPWRSOMC */
+#define ASQ_INVALID_FIELD_IN_PARAMETER_LIST            _ASQ(0x26,0x00) /* DTLPWRSOMC */
+#define ASQ_PARAMETER_NOT_SUPPORTED                    _ASQ(0x26,0x01) /* DTLPWRSOMC */
+#define ASQ_PARAMETER_VALUE_INVALID                    _ASQ(0x26,0x02) /* DTLPWRSOMC */
+#define ASQ_THRESHOLD_PARAMETERS_NOT_SUPPORTED         _ASQ(0x26,0x03) /* DTLPWRSOMC */
+#define ASQ_WRITE_PROTECTED                            _ASQ(0x27,0x00) /* DT__W__O__ */
+#define ASQ_NOT_READY_TO_READY_TRANSITION              _ASQ(0x28,0x00) /* DTLPWRSOMC */
+#define ASQ_MEDIUM_MAY_HAVE_CHANGED                    _ASQ(0x28,0x00) /* DTLPWRSOMC */
+#define ASQ_IMPORT_OR_EXPORT_ELEMENT_ACCESSED          _ASQ(0x28,0x01) /* ________M_ */
+#define ASQ_POWER_ON_OR_RESET_OR_BUS_DEVICE_RESET_OCCURRED \
+                                                       _ASQ(0x29,0x00) /* DTLPWRSOMC */
+#define ASQ_PARAMETERS_CHANGED                         _ASQ(0x2A,0x00) /* DTL_WRSOMC */
+#define ASQ_MODE_PARAMETERS_CHANGED                    _ASQ(0x2A,0x01) /* DTL_WRSOMC */
+#define ASQ_LOG_PARAMETERS_CHANGED                     _ASQ(0x2A,0x02) /* DTL_WRSOMC */
+#define ASQ_COPY_CANNOT_EXECUTE_SINCE_HOST_CANNOT_DISCONNECT \
+                                                       _ASQ(0x2B,0x00) /* DTLPWRSO_C */
+#define ASQ_COMMAND_SEQUENCE_ERROR                     _ASQ(0x2C,0x00) /* DTLPWRSOMC */
+#define ASQ_TOO_MANY_WINDOWS_SPECIFIED                 _ASQ(0x2C,0x01) /* ______S___ */
+#define ASQ_INVALID_COMBINATION_OF_WINDOWS_SPECIFIED   _ASQ(0x2C,0x02) /* ______S___ */
+#define ASQ_OVERWRITE_ERROR_ON_UPDATE_IN_PLACE         _ASQ(0x2D,0x00) /* _T________ */
+#define ASQ_COMMANDS_CLEARED_BY_ANOTHER_INITIATOR      _ASQ(0x2F,0x00) /* DTLPWRSOMC */
+#define ASQ_INCOMPATIBLE_MEDIUM_INSTALLED              _ASQ(0x30,0x00) /* DT__WR_OM_ */
+#define ASQ_CANNOT_READ_MEDIUM_UNKNOWN_FORMAT          _ASQ(0x30,0x01) /* DT__WR_O__ */
+#define ASQ_CANNOT_READ_MEDIUM_INCOMPATIBLE_FORMAT     _ASQ(0x30,0x02) /* DT__WR_O__ */
+#define ASQ_CLEANING_CARTRIDGE_INSTALLED               _ASQ(0x30,0x03) /* DT________ */
+#define ASQ_MEDIUM_FORMAT_CORRUPTED                    _ASQ(0x31,0x00) /* DT__W__O__ */
+#define ASQ_FORMAT_COMMAND_FAILED                      _ASQ(0x31,0x01) /* D_L____O__ */
+#define ASQ_NO_DEFECT_SPARE_LOCATION_AVAILABLE         _ASQ(0x32,0x00) /* D___W__O__ */
+#define ASQ_DEFECT_LIST_UPDATE_FAILURE                 _ASQ(0x32,0x01) /* D___W__O__ */
+#define ASQ_TAPE_LENGTH_ERROR                          _ASQ(0x33,0x00) /* _T________ */
+#define ASQ_RIBBON_OR_INK_OR_TONER_FAILURE             _ASQ(0x36,0x00) /* __L_______ */
+#define ASQ_ROUNDED_PARAMETER                          _ASQ(0x37,0x00) /* DTL_WRSOMC */
+#define ASQ_SAVING_PARAMETERS_NOT_SUPPORTED            _ASQ(0x39,0x00) /* DTL_WRSOMC */
+#define ASQ_MEDIUM_NOT_PRESENT                         _ASQ(0x3A,0x00) /* DTL_WRSOM_ */
+#define ASQ_SEQUENTIAL_POSITIONING_ERROR               _ASQ(0x3B,0x00) /* _TL_______ */
+#define ASQ_TAPE_POSITION_ERROR_AT_BEGINNING_OF_MEDIUM _ASQ(0x3B,0x01) /* _T________ */
+#define ASQ_TAPE_POSITION_ERROR_AT_END_OF_MEDIUM       _ASQ(0x3B,0x02) /* _T________ */
+#define ASQ_TAPE_OR_ELECTRONIC_VERTICAL_FORMS_UNIT_NOT_READY \
+                                                       _ASQ(0x3B,0x03) /* __L_______ */
+#define ASQ_SLEW_FAILURE                               _ASQ(0x3B,0x04) /* __L_______ */
+#define ASQ_PAPER_JAM                                  _ASQ(0x3B,0x05) /* __L_______ */
+#define ASQ_FAILED_TO_SENSE_TOP_OF_FORM                        _ASQ(0x3B,0x06) /* __L_______ */
+#define ASQ_FAILED_TO_SENSE_BOTTOM_OF_FORM             _ASQ(0x3B,0x07) /* __L_______ */
+#define ASQ_REPOSITION_ERROR                           _ASQ(0x3B,0x08) /* _T________ */
+#define ASQ_READ_PAST_END_OF_MEDIUM                    _ASQ(0x3B,0x09) /* ______S___ */
+#define ASQ_READ_PAST_BEGINNING_OF_MEDIUM              _ASQ(0x3B,0x0A) /* ______S___ */
+#define ASQ_POSITION_PAST_END_OF_MEDIUM                        _ASQ(0x3B,0x0B) /* ______S___ */
+#define ASQ_POSITION_PAST_BEGINNING_OF_MEDIUM          _ASQ(0x3B,0x0C) /* ______S___ */
+#define ASQ_MEDIUM_DESTINATION_ELEMENT_FULL            _ASQ(0x3B,0x0D) /* ________M_ */
+#define ASQ_MEDIUM_SOURCE_ELEMENT_EMPTY                        _ASQ(0x3B,0x0E) /* ________M_ */
+#define ASQ_INVALID_BITS_IN_IDENTIFY_MESSAGE           _ASQ(0x3D,0x00) /* DTLPWRSOMC */
+#define ASQ_LOGICAL_UNIT_HAS_NOT_SELF_CONFIGURED_YET   _ASQ(0x3E,0x00) /* DTLPWRSOMC */
+#define ASQ_TARGET_OPERATING_CONDITIONS_HAVE_CHANGED   _ASQ(0x3F,0x00) /* DTLPWRSOMC */
+#define ASQ_MICROCODE_HAS_BEEN_CHANGED                 _ASQ(0x3F,0x01) /* DTLPWRSOMC */
+#define ASQ_CHANGED_OPERATING_DEFINITION               _ASQ(0x3F,0x02) /* DTLPWRSOMC */
+#define ASQ_INQUIRY_DATA_HAS_CHANGED                   _ASQ(0x3F,0x03) /* DTLPWRSOMC */
+#define ASQ_RAM_FAILURE                                        _ASQ(0x40,0x00) /* D_________ */
+#define ASQ_DIAGNOSTIC_FAILURE_ON_COMPONENT_00         _ASQ(0x40,0x00) /* DTLPWRSOMC */
+#define ASQ_DATA_PATH_FAILURE                          _ASQ(0x41,0x00) /* D_________ */
+#define ASQ_POWER_ON_OR_SELF_TEST_FAILURE              _ASQ(0x42,0x00) /* D_________ */
+#define ASQ_MESSAGE_ERROR                              _ASQ(0x43,0x00) /* DTLPWRSOMC */
+#define ASQ_INTERNAL_TARGET_FAILURE                    _ASQ(0x44,0x00) /* DTLPWRSOMC */
+#define ASQ_SELECT_OR_RESELECT_FAILURE                 _ASQ(0x45,0x00) /* DTLPWRSOMC */
+#define ASQ_UNSUCCESSFUL_SOFT_RESET                    _ASQ(0x46,0x00) /* DTLPWRSOMC */
+#define ASQ_SCSI_PARITY_ERROR                          _ASQ(0x47,0x00) /* DTLPWRSOMC */
+#define ASQ_INITIATOR_DETECTED_ERROR_MESSAGE_RECEIVED  _ASQ(0x48,0x00) /* DTLPWRSOMC */
+#define ASQ_INVALID_MESSAGE_ERROR                      _ASQ(0x49,0x00) /* DTLPWRSOMC */
+#define ASQ_COMMAND_PHASE_ERROR                                _ASQ(0x4A,0x00) /* DTLPWRSOMC */
+#define ASQ_DATA_PHASE_ERROR                           _ASQ(0x4B,0x00) /* DTLPWRSOMC */
+#define ASQ_LOGICAL_UNIT_FAILED_SELF_CONFIGURATION     _ASQ(0x4C,0x00) /* DTLPWRSOMC */
+#define ASQ_OVERLAPPED_COMMANDS_ATTEMPTED              _ASQ(0x4E,0x00) /* DTLPWRSOMC */
+#define ASQ_WRITE_APPEND_ERROR                         _ASQ(0x50,0x00) /* _T________ */
+#define ASQ_WRITE_APPEND_POSITION_ERROR                        _ASQ(0x50,0x01) /* _T________ */
+#define ASQ_POSITION_ERROR_RELATED_TO_TIMING           _ASQ(0x50,0x02) /* _T________ */
+#define ASQ_ERASE_FAILURE                              _ASQ(0x51,0x00) /* _T_____O__ */
+#define ASQ_CARTRIDGE_FAULT                            _ASQ(0x52,0x00) /* _T________ */
+#define ASQ_MEDIA_LOAD_OR_EJECT_FAILED                 _ASQ(0x53,0x00) /* DTL_WRSOM_ */
+#define ASQ_UNLOAD_TAPE_FAILURE                                _ASQ(0x53,0x01) /* _T________ */
+#define ASQ_MEDIUM_REMOVAL_PREVENTED                   _ASQ(0x53,0x02) /* DT__WR_OM_ */
+#define ASQ_SCSI_TO_HOST_SYSTEM_INTERFACE_FAILURE      _ASQ(0x54,0x00) /* ___P______ */
+#define ASQ_SYSTEM_RESOURCE_FAILURE                    _ASQ(0x55,0x00) /* ___P______ */
+#define ASQ_UNABLE_TO_RECOVER_TABLE_OF_CONTENTS                _ASQ(0x57,0x00) /* _______R__ */
+#define ASQ_GENERATION_DOES_NOT_EXIST                  _ASQ(0x58,0x00) /* __O_______ */
+#define ASQ_UPDATED_BLOCK_READ                         _ASQ(0x59,0x00) /* __O_______ */
+#define ASQ_OPERATOR_REQUEST_OR_STATE_CHANGE_INPUT     _ASQ(0x5A,0x00) /* DTLPWRSOM_ */
+#define ASQ_OPERATOR_MEDIUM_REMOVAL_REQUEST            _ASQ(0x5A,0x01) /* DT__WR_OM_ */
+#define ASQ_OPERATOR_SELECTED_WRITE_PROTECT            _ASQ(0x5A,0x02) /* DT__W__O__ */
+#define ASQ_OPERATOR_SELECTED_WRITE_PERMIT             _ASQ(0x5A,0x03) /* DT__W__O__ */
+#define ASQ_LOG_EXCEPTION                              _ASQ(0x5B,0x00) /* DTLPWRSOM_ */
+#define ASQ_THRESHOLD_CONDITION_MET                    _ASQ(0x5B,0x01) /* DTLPWRSOM_ */
+#define ASQ_LOG_COUNTER_AT_MAXIMUM                     _ASQ(0x5B,0x02) /* DTLPWRSOM_ */
+#define ASQ_LOG_LIST_CODES_EXHAUSTED                   _ASQ(0x5B,0x03) /* DTLPWRSOM_ */
+#define ASQ_RPL_STATUS_CHANGE                          _ASQ(0x5C,0x00) /* D___O_____ */
+#define ASQ_SPINDLES_SYNCHRONIZED                      _ASQ(0x5C,0x01) /* D___O_____ */
+#define ASQ_SPINDLES_NOT_SYNCHRONIZED                  _ASQ(0x5C,0x02) /* D___O_____ */
+#define ASQ_LAMP_FAILURE                               _ASQ(0x60,0x00) /* ______S___ */
+#define ASQ_VIDEO_ACQUISITION_ERROR                    _ASQ(0x61,0x00) /* ______S___ */
+#define ASQ_UNABLE_TO_ACQUIRE_VIDEO                    _ASQ(0x61,0x01) /* ______S___ */
+#define ASQ_OUT_OF_FOCUS                               _ASQ(0x61,0x02) /* ______S___ */
+#define ASQ_SCAN_HEAD_POSITIONING_ERROR                        _ASQ(0x62,0x00) /* ______S___ */
+#define ASQ_END_OF_USER_AREA_ENCOUNTERED_ON_THIS_TRACK _ASQ(0x63,0x00) /* _____R____ */
+#define ASQ_ILLEGAL_MODE_FOR_THIS_TRACK                        _ASQ(0x64,0x00) /* _____R____ */