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

Commands—introduction

Pre-execution checks

31