HGST Ultrastar 7K4000 (SAS) Hard Disk Drive Specification
279
20.0 Additional information
This chapter provides additional information or descriptions of various functions, features, or operating models supported by
the Target that are not fully described in previous chapters.
20.1 SCSI Protocol
There are various operating conditions that prevent the Target from executing a SCSI command. This section describes each of
these operating conditions and their relative priority.
20.1.1 Priority of SCSI Status Byte Reporting
After establishing the I_T_L nexus or I_T_L_Q nexus the Target must first determine whether command execution is allowed.
Execution is deferred until a later time if the command must be added to the command queue. Execution may also be pre-
vented by an internal Target condition that requires the reporting of a Check Condition, Queue Full, Busy, or Reservation Con-
flict Status. There are several different internal conditions to be active at the same time. The order in which the Target checks
for each of these conditions determines their priority (highest priority first) as follows:
1. Check Condition status for invalid Logical Unit Number. (See Section 20.1.2, “Invalid LUN Processing” on page 279)
2. Check Condition status for Incorrect Initiator Connection (See Section20.1.3, “Overlapped Commands” on page 280)
3. Check Condition status for Unit Attention Condition (See Section 20.1.5, “Unit Attention Condition” on page 281
4. Busy Status or Queue Full Status (See 20.1.4, “Command Processing During Execution of Active I/O Process” on
page 280
5. Check Condition status for Deferred Error Condition (See Section 20.1.8, “Deferred Error Condition” on page 283)
6. Check Condition status during Startup and Format operations (See Section “20.1.6, “Command Processing During
Startup and Format Operations” on page 283)
7. Reservation Conflict status (See Section 20.1.10, “Command Processing while Reserved” on page 291)
8. Check Condition status for invalid command opcode
9. Check Condition status for invalid command descriptor block
The highest priority internal condition that prevents command execution is reported by the Target provided there is no bus
error.
For all Check Conditions Sense data is built by the target provided a valid LUN address is known. Sense data is cleared by the
Target upon receipt of any subsequent command to the LUN from the initiator receiving the Check Condition.
20.1.2 Invalid LUN Processing
Any value other than zero is invalid.
The target's response to an invalid LUN varies with the command, as follows:
Inquiry: Execute the command, return the INQUIRY data that indicates unknown device type (byte 0 = 7Fh), and return
GOOD status. All other bytes are valid (see 18.5, “INQUIRY (12)” on page 78).
Request Sense: Execute the command, return the sense data with the Sense Key set to Illegal Request and the Additional
Sense Code and Additional Sense Code Qualifier set to LOGICAL UNIT NOT SUPPORTED, and return GOOD status (see
also 18.36, “REQUEST SENSE (03)” on page 225).
All Others: Do not execute the command and return CHECK CONDITION status, along with the auto-sense data with the
Sense Key set to Illegal Request and the Additional Sense Code and Additional Sense Code Qualifier set to LOGICAL UNIT
NOT SUPPORTED.
In all cases, the target's response to the command for an invalid LUN does not affect the current execution of a command on
the valid LUN for this initiator or any other initiator.