SCSI event codes for VMware ESX/ESXi

SCSI (Small Computer System Interface) is an ANSI standard used for attaching peripheral devices to computers. It ensures quick data transfer with a transmission rate of more than 40mbps. SCSI was standardized in 1986 and is still being used. The recent developments of SCSI are Serial Storage Architecture (SSA), SCSI-over-Fibre Channel Protocol (FCP), Serial Attached SCSI (SAS), Automation/Drive Interface − Transport Protocol (ADT), and USB Attached SCSI (UAS).

In SCSI terminology, communication takes place between an initiator (source) and a target (destination). The initiator sends a command to the target, which then responds back with a status code byte showing if it was successful or not. In this article, we shall see some of the SCSI codes for VMware ESX and ESXi.
This will be helpful for anyone that is not sure what those numbers mean.

The SCSI event codes are logged in the file /var/log/vmkernel.

For ESXi/ESX 3.5 hosts, the log will be similar to:

  • StorageMonitor: 196: vmhba32:183:0:0 status = 2/0 0x4 0x84 0x21

For ESXi/ESX 4.x hosts, the log will be similar to:

  • NMP: nmp_CompleteCommandForPath: Command 0x28 (0x4100060b6200) to NMP device “naa.600601608c121200f80d33192b62dd11” failed on physical path “vmhba2:C0:T0:L4” H:0x8 D:0x0 P:0x0 Possible sense data: 0x0 0x0 0x0.

For ESXi 5.x hosts, the log will be similar to:

  • ScsiDeviceIO: 2315: Cmd(0x4124003edb00) 0x12, CmdSN 0x51 to dev “naa.600508e000000000c9f6baa7c19f6900” failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x24 0x0.

The event codes can also indicate a prompt path failover. If the host receives a SCSI code other than those listed, a failover does not occur.  The numbers in the codes follow the format as follows:

For ESXi/ESX 3.5 and versions earlier than Update 5 → A/B 0xCC 0xDD 0xEE

Effectively, it is:
“SCSI Status of Target”/”SCSI Status of Initiator” “Sense Key” “ASC” “ASCQ”

For ESXi/ESX 3.5U5, ESXi/ESX 4.0 & later versions → H:0xA D:0xB P:0xC Possible sense data: 0xD 0xE 0xF

Effectively, it is:
H: “Host status(Initiator)” B: “Device Status(Target)” P: “Plugin(VMware Specific)” Possible sense data: “Sense Key” “Additional Sense Code” “Additional Sense Code Qualifier”

SCSI Device Status (Target) codes

[table id=2 /]

SCSI Host (Initiator) codes

[table id=3 /]

SCSI Sense Keys

SCSI Sense Keys appear in the Sense Data available when a command returns with a CHECK CONDITION status. The sense key contains all the information necessary to understand why the command has failed.

[table id=4 /]

SCSI Additional Sense Data

SCSI Additional Sense Data takes the form of two value encoded bytes in the sense data, typically returned by the REQUEST SENSE command. The additional sense code (ASC) byte indicates information about the error exception reported in the sense key field. The additional sense code qualifier (ASCQ) indicates detailed information related to the additional sense code.

  • ASC value (in hexadecimal)
  • ASCQ value (in hexadecimal)
  • Codes identifying devices that may use the ASC/ASCQ pair value. (See list of device code letters below.)
  • Error or exception indicated by the
  • ASC/ASCQ pair value.

04/00 DTLPWROMAEBKVF LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE
04/01 DTLPWROMAEBKVF LOGICAL UNIT IS IN PROCESS OF BECOMING READY
04/02 DTLPWROMAEBKVF LOGICAL UNIT NOT READY, INITIALIZING COMMAND REQUIRED
04/03 DTLPWROMAEBKVF LOGICAL UNIT NOT READY, MANUAL INTERVENTION REQUIRED

VMware plug-in transfer codes

ESXi 5.0

[table id=5 /]

ESXi/ESX 4.x

[table id=6 /]

Written by actsupp-r0cks