A SERVICE OF

logo

Pre-execution checks
Commands—introduction
31
reported. If such an error exists, then the drive reports CHECK CONDITION. The sense data for the
command is set to
DEFERRED ERROR (which was generated when some previous command failed).
Note that if a
UNIT ATTENTION condition and a DEFERRED ERROR condition both exist for an
initiator, the
DEFERRED ERROR condition will be reported first. This is because the operation leading
to the deferred error must have been older than that leading to the unit attention. The drive reports
the conditions in the order in which they arose.
Diagnostic Status check
This ensures that the drive is in a fit state to access the media. It does this by checking that there is
no
DIAGNOSTIC FAIL status within the drive.
If the drive has failed diagnostics,
CHECK CONDITION is reported with a sense key of HARDWARE
ERROR
and additional sense of 400Xh (diagnostic failure on component X).
Fixed Bit check
For the READ, VERIFY and WRITE commands, a Fixed bit set to 1 indicates that the length parameter
of the command is for fixed block mode. If fixed block mode is selected then the block size in the
Mode Select block descriptor must not be zero. Otherwise
CHECK CONDITION is reported and the
sense data is set as described for the
ILLEGAL FIELD check.
Flag Link check
This check ensures that the host has not set the Flag bit in the control byte of the command without
setting the Link bit as well. If the test fails then
CHECK CONDITION is reported with a sense key of
ILLEGAL REQUEST and additional sense of 2400h (invalid field in CDB). The Flag field is identified
as the bad field.
Illegal Command check
If the drive does not recognize the opcode of the command that it has been sent, it will do one of
the following:
Report
CHECK CONDITION status. The sense key will be set to ILLEGAL REQUEST and the
additional sense code will be set to 2000h (invalid command opcode).
Report an invalid field in the command descriptor block. The sense key will be set to
ILLEGAL
REQUEST
, the additional sense code will be set to 2400h (invalid field in CDB) and the field
pointer in the sense data will be zero.
Illegal Field/Request check
Checks are performed to ensure the host has not set any of the following in the command
descriptor block:
a fixed field