page 1 of 2 Date: April 23, 1988 X3T9.2/88-038R0 To: X3T9.2 Committee (SCSI) From: James McGrath (Quantum) Subject: REV 4 Issues - Sections 7 and 8 1. INQUIRY In the sixth paragraph of the command documentation in section 7.1.5, the sentence "The INQUIRY command shall return a CHECK CONDITION status only when the target cannot return the requested INQUIRY data." appears. Do we really mean that NO other errors are allowed - e.g. VDP Identifier field containing an illegal value, parity error on the SCSI bus, etc...? 2. MODE SENSE The last paragraph of section 7.1.8.2 (Changable Parameters), which currently reads: If none of parameters are changeable within a page, the target may or may not return bytes 0 and 1 of the page. If the target returns these two bytes, the page length value shall be set to zero by the target. should be deleted. There is an editor's note with which I totally agree (i.e. we should always return the full page): [this creates problems in the device driver. We should re-address whether the full page must be returned. Should the 3F request have the parameter lists match page for page to allow easy compares?] Not only device drivers, but also target code is made much simpler if for any implemented page the length of the returned data is ALWAYS the same as the page length (subject to the overall truncation of the allocation length of course). 3. READ LONG/WRITE LONG Why is the transfer length in bytes and not blocks (or sectors)? page 2 of 2 4. RESERVE In the Logical Unit Reservation section, first paragraph, what does the sentence "If the extent bit is zero, the reservation identification and the extent list length shall be ignored." mean? If the reservation ID or extent list length field is non-zero and the extent bit is zero, should a CHECK CONDITION be generated? The use of the word "ignored" appears to indicate no (i.e. ignore = no checking done). Should we use "reserved" instead? In the Logical Unit Reservation section, last paragraph, what does the sentence "If, after honoring the reservation, any other initiator then subsequently attempts to perform any command on the reserved logical unit other than an INQUIRY command, a REQUEST SENSE command, or a RELEASE command (which shall be ignored), then the command shall be rejected with RESERVATION CONFLICT status." mean? Does this imply that the INQUIRY and REQUEST SENSE commands should be ignored? Or should they be executed through the reservation? Or should they not be executed, and RESERVATION CONFLICT status returned? 5. RELEASE In the Logical Unit Release section, first paragraph, what does the sentence "The reservation ID field in the CDB is ignored by the target." mean? If the reservation ID field is non-zero and extents are not implemented, should a CHECK CONDITION be generated? The use of the word "ignored" appears to indicate no (i.e. ignore = no checking done). Should we use "reserved" instead? 6. SEND DIAGNOSTIC (SELF TEST) Since many implementations of the self testing feature return status before the test is completed, how can we halt a self test that is taking too long without resorting to resetting the drive? Suggestion: except for a few commands (TEST UNIT READY, INQUIRY, RECEIVE DIAGNOSTIC RESULTS, REQUEST SENSE, and ACCESS LOG), any command to the logical unit undergoing test will halt the test and return a CHECK CONDITION status for that command, with sense data set to indicate that the test was halted. 7. WRITE SAME The CDB contains a bytes to transfer field - this should be a number of blocks field. Also, where are the ILA (include logical address) and IOA (include on all) bits defined? The model (i.e. features list) should be that of the initialization pattern option of FORMAT command.