Date: July 3, 1990 X3T9.2/90-110 Rev 2 To: X3T9.2 Committee (SCSI) From: George Penokie (IBM) Subject: Defect List Lengths exceeding 64 Kbytes Problem: The Read Defect Data command in the Direct-Access Devices section of the SCSI-2 standard only allows for a Defect List Length of 64 Kbytes. A 64 Kbyte list length translates into 8K defects. Although this may sound like a large number, it is not when you consider drives are being announced in the 2GB range. Because of this 8K limit a 2GB drive can only have approximately 0.21% of it's capacity used for defects. We normally put aside between 1% and 2% of a files capacity to handle defects. Proposal: 1-Add into the description of the Read Defect Command the following: If the defect list(s) requested cannot be transferred within 64Kbytes then the Target shall transfer as much of the requested information as possible. The Target shall end the command with a Check Condition status. The sense key shall be set to Recovered Error and the ASCQ shall be set to Partial Defect List Transfer. Implementors Note: If the Initiator is requesting more than one list to be transferred in a single transfer it may try transferring one list at a time. This may succeed thereby removing the need to issue a 12 byte Read Defect Command. 2-Add the following ASCQ to handle the case where the Target cannot send the entire Read Defect Data Defect List. Note that the Optical Memory devices also do not currently have any way to notify the Initiator if there are more that 8K defects when a 10 byte Read Defect Data Command is received. Byte 12 13 DTLPWRSOMC Description 1F 00 D O Partial Defect List Transfer 3-Add the Read Defect Data (12) command to the Direct-Access section with the following changes. 15.2.5. READ DEFECT DATA(12) Command Table 15-8: READ DEFECT DATA(12) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (B7h) | -----+-----------------------------------------------------------------------| 1 | Logical Unit Number | Plist | GList | Defect List Format | -----+-----------------------------------------------------------------------| 2 | (MSB) | -----+--- Defect List Segment ID ---| 3 | (LSB) | -----+-----------------------------------------------------------------------| 4 | (MSB) | -----+--- Defect List Segment Size ---| 5 | (LSB) | -----+-----------------------------------------------------------------------| 6 | (MSB) | -----+--- ---| 7 | | -----+--- Allocation Length ---| 8 | | -----+--- ---| 9 | (LSB) | -----+-----------------------------------------------------------------------| 10 | Reserved | -----+-----------------------------------------------------------------------| 11 | Control | ============================================================================== The READ DEFECT DATA(12) command (Table 15-8) requests that the target transfer the medium defect data to the initiator. See the READ DEFECT DATA(10) command (8.2.8) for a description of the fields in this command. The defect list segment ID field identifies which segment of the defect list to transfer. If zero the Target shall transfer the defect list information up to the specified allocation length. The defect list segment size field indicates the size in bytes of the segment to be transferred. If the defect list segment ID field is zero then the defect list segment size field shall be zero. The READ DEFECT DATA(12) list header (Table 15-9) contains an eight byte header, followed by zero or more defect descriptors. Table 15-9: READ DEFECT DATA(12) LIST HEADER ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Reserved | -----+-----------------------------------------------------------------------| 1 | Reserved | PList | GList | Defect List Format | -----+-----------------------------------------------------------------------| 2 | Reserved | -----+-----------------------------------------------------------------------| 3 | Reserved | -----+-----------------------------------------------------------------------| 4 | (MSB) | -----+--- ---| 5 | | -----+--- Defect List Length | 6 | | -----+--- ---| 7 | (LSB) | ============================================================================== Defect Descriptors ============================================================================== 0-n | | ============================================================================== See the description of the READ DEFECT DATA defect list (Table 8-19) for a description of the fields in this header.