Event log
The Magstar® or ibmtpxxx, ibmcgxxx, and Magchgr device drivers log certain data to the Event Log when exceptions are encountered.
To interpret this event data, the user must be familiar with the
following components:
- Microsoft Event Viewer
- The SDK and DDK components from the Microsoft Development Network (MSDN)
- Magstar and Magstar MP hardware terminology
- SCSI terminology
Several bytes of "Event Detail" data are logged under Source = Magstar or Magchgr (for Windows NT), or under Source = ibmtpxxx or ibmcgxxx (for Windows 2000; Windows Server 2003, Windows Server 2008, and Windows Server 2012).
The following description texts are expected:
- The description for Event ID (0) in Source (MagStar or
ibmtpxxx) was not found. It contains the following insertion
strings:
\Device\Tapex
. - The description for Event ID (x) in Source (MagChgr) was not found.
The user must view the event data in Word format to properly decode the data.
Table 1 and Table 2 indicate the hexadecimal offsets, names, and definitions for Magstar or ibmtpxxx and ibmcgxxx event data. Magchgr event data has a unique format that appears later in this chapter.
Offset | Name | Definition |
---|---|---|
0x00-0x01 | DumpDataSize | Indicates the size in bytes required for any DumpData the driver places in the packet. |
0x02 | RetryCount | Indicates how many times the driver tried the operation and encountered this error. |
0x03 | MajorFunctionCode | Indicates the IRP_MJ_XXX from the driver’s I/O stack location in the current IRP (from NTDDK.H). |
0x0C-0x0F | ErrorCode | For the Magstar device driver, it is 0. For the Magchgr device driver, it is always 0xC00400B (IO_ERR_CONTROLLER_ERROR, from NTIOLOGC.H). |
0x10-0x13 | UniqueErrorValue | Reserved |
0x14-0x17 | FinalStatus | Indicates the value that is set in the I/O status block of the IRP when it was completed or the STATUS_XXX returned by a support routine the driver called (from NTSTATUS.H). |
0x1C-0x1F | IoControlCode | For the Magstar device driver, it indicates the I/O control code from the driver’s I/O stack location in the current IRP if the MajorFunctionCode is IRP_MJ_DEVICE_CONTROL. Otherwise, this value is 0. For the Magchgr device driver, it indicates the I/O control code from the driver’s I/O stack location in the current IRP. |
0x28 | Beginning of Dump Data | The following items are variable in length. See the DDK and SCSI documentation for details. |
0x38 | Beginning of SRB structure | The SCSI Request Block (from NTDDK.H). |
0X68 | Beginning of CDB structure | The Command Descriptor Block (from SCSI.H). |
0x78 | Beginning of SCSI Sense Data | (from SCSI.H). If the first word in this field is 0x00DF0000 (SCSI error marker) or 0x00EF0000 (Non-SCSI error marker), no valid sense information was available for this error. |
For example, ibmcgxxx logs the following
error when a move medium is attempted and the destination element
is full. Explanations of selected fields follow.
0000: 006c000f 00c40001 00000000 c004000b
0010: bcde7f48 c0000284 00000000 00000000
0020: 00000000 00000000 00000000 000052f4
0030: 00000000 00000000 004000c4 02000003
0040: 600c00ff 00000028 00000000 00000258
0050: 00000000 814dac28 00000000 bcde7f48
0060: 81841000 00000000 a5600000 00200010
0070: 00000000 00000000 70000500 00000058
0080: 00000000 3b0dff02 00790000 0000093e
0090: 00000000
Field | Value | Definition |
---|---|---|
DumpDataSize | 0x006C | 6C hex (108 dec) bytes of dump data, beginning at byte 28 hex. |
RetryCount | 0x00 | The first time that the operation is attempted (no retries). |
MajorFunctionCode | 0x0F | IRP_MJ_INTERNAL_DEVICE_CONTROL |
FinalStatus | 0xC0000284 | STATUS_DESTINATION_ELEMENT_FULL |
IoControlCode | 0x00000000 | - |
SRB | 0x004000C4... | From NTDDK.H, the first word of the SRB indicates the length of the SRB (40 hex bytes, 64 dec bytes), the function code (0x00), and the SrbStatus (from SRB.H, 0xC4 = SRB_STATUS_AUTOSENSE_VALID, SRB_STATUS_QUEUE_FROZEN, SRB_STATUS_ERROR). |
CDB | 0xA5... | From SCSI.H, the first byte of the CDB is the operation code. 0xA5 = SCSIOP_MOVE_MEDIUM. |
Sense Data | 0x70000500... | From SCSI.H, the first word of the sense data indicates the error code (0x70), the segment number (0x00), and the sense key (0x05, corresponding to an illegal SCSI request). |
Table 3 and Table 4 contain definitions
for event data that is logged under Magchgr.
Offset | Name | Definition |
---|---|---|
0x00-0x01 | DumpDataSize | Indicates the size in bytes required for any DumpData the driver places in the packet. |
0x02 | RetryCount | Indicates how many times the driver tried the operation and encountered this error. |
0x03 | MajorFunctionCode | Indicates the IRP_MJ_XXX from the driver’s I/O stack location in the current IRP (from NTDDK.H). |
0x0C-0x0F | ErrorCode | For the Magstar device driver, it is 0. For the Magchgr device driver, it is always 0xC00400B (IO_ERR_CONTROLLER_ERR) (from NTIOLOGC.H). |
0x10-0x13 | UniqueErrorValue | Reserved |
0x14-0x17 | FinalStatus | Indicates the value that is set in the I/O status block of the IRP when it was completed or the STATUS_XXX returned by a support routine the driver called (from NTSTATUS.H). |
0x1C-0x1F | IoControlCode | For the Magstar device driver, it indicates the I/O control code from the driver I/O stack location in the current IRP if the MajorFunctionCode is IRP_MJ_DEVICE_CONTROL. Otherwise, this value is 0. For the Magchgr device driver, it indicates the I/O control code from the driver’s I/O stack location in the current IRP. |
0x29 | PathId | SCSI Path ID |
0x2A | TargetId | SCSI Target ID |
0x2B | LUN | SCSI Logical Unit Number |
0x2D | CDB[0] | Command Operation Code |
0x2E | SRB_STATUS | See MINITAPE.H or SRB.H. |
0x2F | SCSI_STATUS | See SCSI.H or a SCSI specification. |
0x30-0x33 | Timeout Value | For the Magstar device driver, this value is always 0. For the Magchgr device driver, this value is the command timeout value in seconds. |
0x38 | FRU or Sense Byte 14 | For the Magstar device driver, this value is the Field Replaceable Unit Code. For the Magchgr device driver, this value is Sense Byte 14. |
0x39 | SenseKeySpecific[0] | Indicates Sense Key Specific byte (Sense Byte 15). |
0x3A | SenseKeySpecific[1] or CDB length | If valid sense data was returned, SenseKeySpecific[1] (Sense Byte 16) is displayed. Otherwise, the CDB length is displayed. See offset 0x3D to determine whether valid sense data is returned. |
0x3B | SenseKeySpecific[2] or CDB[0] | If valid sense data was returned, SenseKeySpecific[2] (Sense Byte 17) is displayed. Otherwise, the CDB operation code is displayed. See offset 0x3D to determine whether valid sense data is returned. |
0x3C | Sense Byte 0 | Indicates the first byte of returned sense data. |
0x3D | Sense Byte 2 | Indicates the second byte of returned sense data. This byte contains the Sense Key and other flags. If the byte is set to 0xDF (SCSI Error Marker) or 0xEF (Non-SCSI Error Marker), no valid sense information was available for the error. |
0x3E | ASC or SRB_STATUS | Indicates Sense Byte 12, if there was valid sense information. Otherwise, the SRB status value is given here. See offset 0x3D to determine whether valid sense data is returned. |
0x3F | ASCQ or SCSI_STATUS | Indicates Sense Byte 13, if there was valid sense information. Otherwise, the SCSI status value is given here. See offset 0x3D to determine whether valid sense data is returned. |
For example,
0000: 0018000f 006c0001 00000000 00000000
0010: 00000000 c0000185 00000000 00000000
0020: 00000000 00000000 00000300 0015c402
0030: 00000000 00000000 f50ac607 700b4b00
Field | Value | Definition |
---|---|---|
DumpDataSize | 0x0018 | - |
RetryCount | 0x00 | - |
MajorFunctionCode | 0x0F | IRP_MJ_INTERNAL_DEVICE_CONTROL |
FinalStatus | 0xC0000185 | STATUS_IO_DEVICE_ERROR |
IoControlCode | 0x00000000 | - |
PathId | 0x00 | - |
TargetId | 0x03 | - |
LUN | 0x00 | - |
CDB[0] | 0x15 | Mode Select, Byte 6 |
SRB_STATUS | 0xC4 | SRB_STATUS_AUTOSENSE_VALID, SRB_STATUS_QUEUE_FROZEN, SRB_STATUS_ERROR |
SCSI_STATUS | 0x02 | Check condition |
FRU | 0xF5 | - |
Sense Key Specific Sense Bytes 15 - 17 | 0x0AC607 | - |
Sense Byte 0 | 0x70 | - |
Sense Key Sense Byte 2 | 0xb4 | - |
ASC | 0x4B | - |
ACSQ | 0x00 | - |