August 26, 1988 To: X3T9.2 Membership From: Dan Davies, Cipher Subj: Generic Read-Write Error Recovery Mode Parameters Page This document is the outgrowth of an action item to clarify the wording of the retry counts and algorithms in REQUEST SENSE and MODE SELECT/SENSE (the long dormant Gary Stephens action item that I inherited). After evaluating the mode parameters pages in each device section, it appeared that most (if not all) of the error recovery parameters could be applied to all device types. The proposal does not suggest that each device would support all parameter values associated with the page; however, it does not seem unreasonable to suggest that any device could report one of the possible values for any given parameter field. Given this background, not to mention the never-ending struggle to spare trees, I offer this proposal to combine the existing page 01h mode parameters pages into a common page for all device types to be included in Section 7 of Revision 6. 7._._. Read-Write Error Recovery Parameters Page Table 7-__: Read-Write Error Recovery Parameters ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 |Reserved|Reserved| Page Code (01h) | -----|-----------------------------------------------------------------------| 1 | Additional Page Length (0Ah) | -----|-----------------------------------------------------------------------| 2 | AWRE | ARRE | TB | RC | EER | PER | DTE | DCR | -----|-----------------------------------------------------------------------| 3 | Read Retry Count | -----|-----------------------------------------------------------------------| 4 | Correction Span | -----|-----------------------------------------------------------------------| 5 | Head Offset Count | -----|-----------------------------------------------------------------------| 6 | Data Strobe Offset Count | -----|-----------------------------------------------------------------------| 7 | Reserved | -----|-----------------------------------------------------------------------| 8 | Write Retry Count | -----|-----------------------------------------------------------------------| 9 | Reserved | -----|-----------------------------------------------------------------------| 10 | (MSB) | -----|--- Recovery Time Limit ---| 11 | (LSB) | ============================================================================== The read-write error recovery parameters page (Table 7._) specifies the error recovery and reporting parameters that the target shall use when transferring data between the initiator and the medium. These parameters only apply to read-write errors and do not affect message system retries or positioning error recovery procedures. A disable correction (DCR) bit of one indicates that the target shall not use error correction codes during error recovery. A DCR bit of zero allows the use of error correction codes for error recovery. A disable transfer on error (DTE) bit of one indicates that the target shall terminate the data transfer when a recovered read-write error occurs. A DTE bit of zero indicates that the target shall not terminate the transfer for errors recovered within the limits established by the read-write error recovery parameters. A post error (PER) bit of one indicates that the target shall return CHECK CONDITION status to report recovered errors. A PER bit of zero indicates that the target shall not report errors recovered within the limits established by the error recovery parameters. If this bit is zero, the DTE bit must also be set to zero. An enable early recovery (EER) bit of one indicates that the target shall use the most expedient error recovery algorithm (e.g., attempt error correction prior to read-write retries). An EER bit of zero indicates that the target shall use the most deliberate read-write error recovery algorithm, within the limits established by the other error recovery parameters (e.g., attempt to recover the block error-free prior to using error correction). [I have removed the requirement for an ILLEGAL REQUEST response if the DCR and EER bits are both set to one. For some conditions, error correction may not be the most expedient error recovery algorithm. DMD] [The tables describing error recovery and reporting bit definitions have been deleted. Since the Colorado Springs plenary agreed that restrictions on implementation of the EER bit should be removed, much of the table is obsolete and the rest becomes redundant. DMD] A read continuous (RC) bit of one indicates that the target shall transfer the entire requested length of data without adding delays to perform error recovery. This implies that the target may send data that is erroneous or fabricated in order to maintain a continuous flow of data. The target shall assign priority to this bit over any conflicting error recovery and reporting parameters within this page. A RC bit of zero indicates that target shall use the specified error recovery and reporting parameters when an error occurs during the requested data transfer. Implementors note: This bit set to one is typically used in image processing, audio, or video applications where uninterrupted data flow is more important than error-free data. A transfer block (TB) bit of one indicates that a data block that is not recoverable within the specified recovery limits shall be transferred to the initiator before CHECK CONDITION status is returned. A TB bit of zero indicates that the unrecoverable data block shall not be transferred to the initiator. Data blocks that can be recovered within the recovery limits are always transferred, regardless of the value of the TB bit. [Some unrecoverable read-write errors have no data to transfer. Does TB set to one require the target to fabricate data to satisfy the block length? DMD] An automatic read reallocation enabled (ARRE) bit of one indicates that the target shall enable automatic reallocation of defective data blocks during read operations. An ARRE bit of zero specifies that the target shall not perform automatic reallocation of defective data blocks during read operations. An automatic write reallocation enabled (AWRE) bit of one indicates that the target shall enable automatic reallocation of defective data blocks during write operations. An AWRE bit of zero specifies that the target shall not perform automatic reallocation of defective data blocks during write operations. Automatic read and write reallocation, if supported, is performed at the discretion of the target in a manner similar to the REASSIGN BLOCKS command (see 8._._). Data is placed in the reallocated block if the data could be recovered within the limits established by the error recovery parameters. Error reporting as required by the error recovery parameters shall be performed only after completion of the reassignment. The reassignment process shall report any failures that occur during the reassignment process. See the REASSIGN BLOCKS command for error procedures. The read retry count specifies the number of times that the target should retry a read operation before an unrecoverable error is reported. A read retry count of zero indicates that the target shall not retry read operations during error recovery. The correction span field specifies the size, in bits, of the largest burst data error for which data error correction may be attempted. A value of zero indicates that no correction span is specified. The head offset count field specifies, in two's-complement notation, an incremental position to which the head(s) shall be offset from the nominal setting. A value of zero indicates that no offset is specified. A positive value indicates moving the head(s) in a positive direction as specified by the target. A negative value indicates moving the head(s) in a negative direction as specified by the target. Any value specified in the head offset count field does not preclude the target from using positive or negative head offset during error recovery. However, after any error recovery is completed, the target shall return the head offset to the value specified in this field. The effect of this field on write operations is unspecified. The Data Strobe Offset Count field specifies, in two's-complement notation, an incremental position to which the recovered data strobe shall be adjusted from its nominal setting. A value of zero indicates that no data strobe offset is specified. A positive value indicates movement in a positive direction as defined by the target. A negative value indicates movement in the negative direction as defined by the target. Any value specified in this field does not preclude the target from using positive or negative data strobe offset during error recovery. However, after any error recovery is completed, the target shall return the data strobe offset to the value specified in this field. The effect of this field on write operations is unspecified. The target shall return CHECK CONDITION status and shall set the sense key to ILLEGAL REQUEST if an unsupported head or data strobe offset count is specified. The valid bit shall be set to one and the information bytes shall be set to the positive value of the maximum offset count that is supported. The target shall set the valid bit to zero if it cannot determine the maximum offset count supported. [Why not allow rounding for these fields? DMD] IMPLEMENTORS NOTE: The degree of offset for each incremental count and the number of valid values are device specific. It is recommended that the number of valid values be equal for the positive and negative offset counts. The write retry count specifies the number of times that the target should retry a write operation before an unrecoverable error is reported. A write retry count of zero indicates that the target shall not retry write operations during error recovery. The recovery time limit field specifies, in increments of one millisecond, the maximum time duration that the target shall use for data error recovery procedures. The target may round this value as described in 6._._. The limits in this field specifies the maximum error recovery time allowed for any individual logical block. If both retry count and recovery time limit are specified, the field that specifies the recovery action of least duration shall have priority. [Is this last sentence necessary? DMD]