X3T9.2/88-169 December 22, 1988 To: X3T9.2 Membership From: James J. Semenak, (AT&T) Subject: Editorialized LOG SELECT/SENSE Commands The proposal is an attempt to editorially clean-up the LOG SENSE and LOG SELECT commands. In doing that, I uncovered some inconsistencies in the definition of the commands. This is my attempt to clean this up. It was not my intention to add, delete or change any substantial portion of these commands (although they seem much to complicated for my use). I am asking the committee members to review the changes and to either recommend to take or reject, as a whole, this proposal and use it to replace the LOG SENSE/SELECT text in SCSI-2 Revision 6. The following non-editorial changes have been made to the commands: 1) The ability to set all parameters to their default values without having to send all the respective parameter codes. 2) The ability to reset (via PCR bit in LOG SELECT) all parameter code values. 3) The ability to turn-off the generation of a CHECK CONDITION (via MODE SELECT), for initiators that do not want to get this information (i.e., the initiators that do not implement LOG parameters). LOG SELECT Command Peripheral Device Type: All Operation Code Type: Optional LOG SELECT Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (4Ch) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | Reserved | PCR | SP | -----|-----------------------------------------------------------------------| 2 | PC | Reserved | -----|-----------------------------------------------------------------------| 3 | Reserved | -----|-----------------------------------------------------------------------| 4 | Reserved | -----|-----------------------------------------------------------------------| 5 | Reserved | -----|-----------------------------------------------------------------------| 6 | Reserved | -----|-----------------------------------------------------------------------| 7 | (MSB) | -----|--- Allocation Length ---| 8 | (LSB) | -----|-----------------------------------------------------------------------| 9 | Control Byte | ============================================================================== The LOG SELECT command (Table 7-20) provides a means for the initiator to manage statistical information maintained by the device about the device or attached logical units. Structures in the form of log pages and parameter code structures are defined as a way to manage this information. This standard does not define the format of the log data itself. Targets that implement the LOG SELECT command shall also implement the LOG SENSE command. IMPLEMENTORS NOTE: Initiators should issue a LOG SENSE command prior to a LOG SELECT command to determine supported pages and page parameter lengths. If an initiator sends a LOG SELECT command that changes any parameters that apply to other initiators, the target shall generate an unit attention condition for all initiators except the initiator that issued the LOG SELECT command (see 6.1.3). The sense key shall be set to UNIT ATTENTION, the additional sense code shall be set to LOG PARAMETERS CHANGED. IMPLEMENTORS NOTE: The target may provide for independent sets of parameters for each attached logical unit or for each combination of logical unit and initiator. If the initiator sends a value for a field of a parameter code that is outside the range supported by the target and rounding is not implemented for that field, the target shall terminate the command with CHECK CONDITION status, the sense key shall be set to ILLEGAL REQUEST, and the additional sense code set to INVALID FIELD IN PARAMETER LIST. Saving Log Parameters A save parameters (SP) bit of one indicates that the target shall perform the specified LOG SELECT operation, and shall save to a non-volatile vendor- specific location all parameters identified as savable by the DS bit in the parameter structure descriptor (see section 7.4.1.1 for a definition of the DS bit) and any parameters identified as savable sent during the DATA OUT phase. A SP bit of zero indicates the target shall perform the specified LOG SELECT operation and shall not save parameters in response to that LOG SELECT command. Saving parameters via the LOG SELECT command is optional and identified on a per parameter code structure by the DS bit of the LOG SENSE data. Note: Parameters can also be saved at vendor-unique times based on the state of the TSD bit of the parameter code structure control byte (see 7.4.1.1) If the target does not implement saved parameters for any supported parameter code structure and the SP bit is set to one, the command shall be terminated with CHECK CONDITION status, the sense key shall be set to ILLEGAL REQUEST, with an additional sense code of INVALID FIELD IN CDB. IMPLEMENTORS NOTE: It is not an error for the SP bit to be set to one and the DS bit of a parameter structure descriptor to be set to one. In this case the parameters should not be saved, for that structure, to a non- volatile vendor-specific location by the LOG SELECT command. A parameter code reset (PCR) bit of one and an allocation length field of zero shall cause all implemented parameter code structure counters and list- type parameters to be set to the target defined reset values (e.g., zero). A PCR bit of one shall not cause log parameters to be reset. Log Page Control Field The page control (PC) field defines the type of parameter code values to be selected. The page control field is defined in Table 7-21. Page Control Field ============================================================================== Bit 7 Bit 6 Type of Parameter Values ----- ----- ------------------------ 0 0 Current Threshold Values 0 1 Current Cumulative Values 1 0 Default Threshold Values 1 1 Default Cumulative Values ============================================================================== Current cumulative values are updated by the target to reflect the cumulative record of events experienced by the target. Current cumulative values can also be updated by the initiator via the LOG SELECT command. The target shall set the threshold parameters to the default threshold values in response to a LOG SELECT command with the PC field set to 10b and the allocation length set to zero. The target shall set the cumulative parameters to the default cumulative values in response to a LOG SELECT command with the PC field to 11b and the allocation length set to zero. IMPLEMENTORS NOTE: Updating the current cumulative parameters via the LOG SELECT command may be used to reset the parameter value to a default state (e.g., zero). The default cumulative values, read by the initiator using the LOG SENSE command, provide the default values suggested by the target manufacturer. The updating and saving of current cumulative parameters are controlled by fields in the parameter control byte (see 7.4.1.1). The current threshold value can only be modified by the initiator via the LOG SELECT command. If the initiator attempts to change current threshold values that are not available or not implemented for that parameter the LOG SELECT command shall be terminated with CHECK CONDITION status with the sense key set to ILLEGAL REQUEST and the additional sense code set to INVALID FIELD IN PARAMETER LIST. The saving of current threshold parameters and the criteria for the current threshold being met are controlled by bits set in the parameter control byte (see 7.4.1.1). IMPLEMENTORS NOTE: Parameters that are not available may become available at sometime later (e.g., when a disk has spun-up). At this time issuing a LOG SELECT command to set the current threshold parameters may complete successful. The allocation length field specifies the length in bytes of the LOG SELECT parameter list that shall be transferred from the initiator to the target during the DATA OUT phase. A parameter list length of zero indicates that no data shall be transferred. This condition shall not be considered as an error. An initiator is required to send pages is ascending order, according to page code values, if multiple pages are sent during a DATA OUT phase. If multiple parameters codes within a page are sent during this DATA OUT phase then they shall be sent in ascending order according to parameter code value. The target shall return a CHECK CONDITION status if the initiator sends parameter codes that are not in ascending order within a page. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN PARAMETER LIST. A allocation length that results in the truncation of any page header or parameter shall cause the target to terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST, and the additional sense code shall be set to INVALID FIELD IN CDB. LOG SENSE Command Peripheral Device Type: All Operation Code Type: Optional LOG SENSE Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (4Dh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | Reserved | PPC | SP | -----|-----------------------------------------------------------------------| 2 | PC | Page Code | -----|-----------------------------------------------------------------------| 3 | Reserved | -----|-----------------------------------------------------------------------| 4 | Reserved | -----|-----------------------------------------------------------------------| 5 | (MSB) | -----|--- Parameter Pointer ---| 6 | (LSB) | -----|-----------------------------------------------------------------------| 7 | (MSB | -----|--- Allocation Length ---| 8 | (LSB) | -----|-----------------------------------------------------------------------| 9 | Control Byte | ============================================================================== The LOG SENSE command (Table 7-22) provides a means for the initiator to retrieve statistical information maintained by the device about the device or attached logical units. The parameter pointer field allows the initiator to request parameter data beginning from a specific parameter code value to the maximum allocation length or the maximum supported by the target, which ever is less. It is a complementary command to the LOG SELECT command. A save pages (SP) bit of zero indicates the target shall perform the specified LOG SENSE operation and shall not save parameters. A SP bit of one indicates that the target shall perform the specified LOG SENSE operation, and shall save to a non-volatile vendor-specific location all parameters identified as savable by the DS bit in the parameter structure descriptor (see 7.4.1.1 for a definition of the DS bit). Saving parameters is an optional function of the LOG SENSE command (see 7.2.7.1 for the definition of saving parameters). The parameter pointer control (PPC) bit controls the type of parameters requested from the target: A PPC bit of one indicates that the target shall return only the number of most recently updated parameters equal to the parameter pointer field value (see 7.4.1.1 for a description of the time ordering of list parameters). A PPC bit of zero indicates that the parameter data requested from the target shall begin with the parameter code specified in the parameter pointer field and return the number of bytes specified by the allocation length field in ascending order of parameter codes. A PPC bit of zero and a parameter pointer field of zero shall cause all available parameter codes for that page code to be returned to the initiator. If the value of the parameter pointer field is larger than the largest available parameter code that could be returned by the target on that page the target shall terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN CDB. Parameters within a page that are transferred during this DATA IN phase shall be transferred in ascending order according to parameter code. The page control (PC) field defines the type of parameter values to be selected (see 7.2.7.2 for the definition of page control field). The type of parameter values returned by a LOG SENSE command is determined by the following: (1) The values since the last update (in response to a LOG SELECT or LOG SENSE command or done by the target for cumulative parameters). (2) The saved values if an update has not occurred since the last power-on RESET condition and saved parameters are implemented. (3) The default values if an update has not occurred since the last power-on RESET condition and saved parameters values are not available or not implemented. IMPLEMENTORS NOTE: The default cumulative parameter values are provided so that the cumulative parameters may be set to a default condition by a LOG SELECT command. The default threshold parameter values are provided to the initiator by the target so that the threshold parameters may be set to a vendor-specific condition by a LOG SELECT command. This vendor specific- condition usually indicates a reasonable level at which a threshold met condition should be detected, and the initiator notified to issue a LOG SENSE command. The page code field identifies which page of data is being transferred (see Table 7-62 for the definition of page codes. If the page code value is reserved or not implemented, the target shall terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST, and the additional sense code shall be set to INVALID FIELD IN CDB. The allocation length field specifies the length in bytes of the requested page code parameters that shall be transferred from the target to the initiator during the DATA IN phase. A parameter list length of zero indicates that no data shall be transferred. This condition shall not be considered as an error. Log Parameter Pages Log Page Descriptor The format of log pages consists of zero or more variable-length parameter structures. Each page begins with a 4-byte page header followed by zero or more variable-length parameters code structures defined for that page. The log page descriptor format is defined in Table 7-59. LOG Page Descriptor ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Reserved | Page Code | -----|-----------------------------------------------------------------------| 1 | Reserved | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- Page Length (m) ---| 3 | (LSB) | -----|-----------------------------------------------------------------------| 4 | | - - -|- - Parameter Structure(p) Descriptor - -| n + 3| | -----|-----------------------------------------------------------------------| n + 4| | - - -|- - Vendor-Specific Parameter(p) Data - -| m | | ============================================================================== The page code field identifies which page of data is being transferred. If the page code field value is reserved or not implemented by the target (see Table 7-), the target shall terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST, and the additional sense code shall be set to INVALID FIELD IN PARAMETER LIST. The page length field defines the length, in bytes, of the page-specific parameters. This length does not include bytes zero through three. A page length value that results in the truncation of any parameter shall cause the target to terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN CDB. A page can have multiple parameter code structures defined. Parameter code structures are composed of a parameter code descriptor and vendor-specific parameter data. Two types of parameter code structures are defined: (1) Counter type parameter codes (see parameter control byte, 7.4._) (2) Event type parameter codes (see parameter control byte, 7.4_) Parameter Code Structure Definition Each parameter code structure begins with a 4-byte parameter header followed by one or more bytes of parameter structure data. The 4-byte header is shown in Table 7-60. LOG Parameter Structure Descriptor ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | (MSB) | -----|--- Parameter Code (p) ---| 1 | (LSB) | -----|-----------------------------------------------------------------------| 2 | DU | DS | TSD | ET | TMC |Reserved| FP | -----|-----------------------------------------------------------------------| 3 | Parameter Length | -----|-----------------------------------------------------------------------| 4 | | - - -|- - Parameter Code Specific Values - -| n + 3| | ============================================================================== The parameter code field identifies which parameter of data is being transferred. See Tables 7-68 to 7-70 for the definition of parameter codes. If the parameter code value is reserved or not implemented, the target shall terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN PARAMETER LIST. Parameter Code Control Byte A disable update (DU) bit of zero indicates that the target shall update the cumulative parameter value to reflect all of the events that should be noted by that parameter. IMPLEMENTORS NOTE: This update operation may use volatile memory, and thus the value is not guaranteed to survive a power cycle. A DU bit of one indicates that the target shall not update the cumulative parameter value except in response to a LOG SELECT command. The DU bit is not defined for the threshold value of a parameter code. A disable save (DS) bit of zero indicates that the target supports parameter saving for that parameter code. The target shall save in a non-volatile vendor-specific location the cumulative or threshold parameter code values in response to a LOG SENSE or LOG SELECT command with an SP bit of one. A DS bit of one indicates that the target does not support saving of that parameter code. The target shall not save any parameter codes, with a DS bit of zero, in response to a LOG SELECT or LOG SENSE command with an SP bit of one. A target save disable (TSD) bit of zero indicates that the target provides a target defined method for saving cumulative parameter code values. This implicit saving operation shall be done frequently enough to insure that the cumulative parameter values retain statistical significance (e.g., across power cycles). A TSD bit of one indicates that the target does not provide a target defined method for saving parameter code values. The TSD and DS bits set to one, shall cause the target to terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN PARAMETER LIST. An enable threshold (ET) bit of zero indicates that the cumulative parameter value shall never be compared to the threshold parameter value. An ET bit of one indicates that when the cumulative parameter value is updated, it shall be compared to the threshold parameter value. The ET bit value shall be the same for both cumulative and threshold values of a parameter code. IMPLEMENTORS NOTE: Setting the ET bit to a certain value for either the cumulative or threshold parameter forces the target to set the ET bit of the other parameter to that same value. The threshold met criteria (TMC) field defines the binary relationship between the cumulative and threshold parameter values under which the threshold is met. When the threshold condition is met, a unit attention condition shall be posted to all initiators. The sense key shall be set to UNIT ATTENTION, the additional sense code shall be set to LOG EXCEPTION and the additional sense code qualifier shall be set to THRESHOLD CONDITION MET. Threshold Met Criterion ===================================== Bit 3 Bit 2 Threshold Met Criteria ----- ----- ----------------------- 0 0 any update of parameter 0 1 cumulative = threshold 1 0 cumulative <> threshold 1 1 cumulative > threshold ===================================== Setting the operation field to a certain criteria for either the cumulative or threshold parameter shall cause the target to set the operation field of the other parameter to that same criteria. The form of parameter (FP) bit indicates the type of the parameter code and is reserved for the LOG SELECT command. If an initiator attempts to change the value of the FP bit, the target shall terminate the command with a CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN PARAMETER LIST. An FP bit of zero indicates that the parameter code type is a data counter. Parameter codes are associated with one of more events. Parameters are updated whenever one of these events occurs by incrementing of the associated counter value. Each counter has associated with it a target defined maximum value. Upon reaching this maximum value, the counter shall no longer increment (i.e., does not wrap), and shall set the sense key to RECOVERED ERROR and the additional sense code shall be set to LOG COUNTER AT MAXIMUM. An FP bit of one indicates that the parameter code type is a list-type of non-counter values. A parameter may also take the form of a list of ASCII, non-graphic, bytes containing data in a non-counter form. The meaning of the data reported may be different for each parameter code. IMPLEMENTORS NOTE: The events and occurrences that cause a target to update parameters are target defined. If two list-type parameters are defined on a single page, the following rules apply to defining parameter code values: (1) the parameter updated last shall have a higher parameter code value than that updated first, (2) when the maximum parameter code value supported by the target is exceeded the target shall assign the lowest parameter code value to the next parameter code (i.e., wrap-around parameter code). IMPLEMENTORS NOTE: List-type parameters can be used to store the locations of defective sectors in the following manner. When a defective sector is identified a list-type parameter is updated to reflect the location and cause of the defect. When the next defect is encountered, the list-type parameter with the next parameter code value is used to record this defect. The size of the page can be made target specific to accommodate memory limitations. It is recommended that one or more data counter parameters be defined for the page to keep track of the number of list-type parameters and the parameter code of the parameter with the oldest recorded defect. This technique can be adapted to record other types of information. The parameter length field defines the length in bytes of the parameter code structure. This length does not include bytes zero through three of the parameter code. A parameter length value that results in the truncation of the parameter structure shall cause the target to terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN PARAMETER LIST. If the initiator sends a value for a parameter code that is outside the range supported by the target and rounding is implemented for that parameter, the target may either: (1) round the value to an acceptable value and terminate the command as described in 6.5.4. (2) terminate the command with CHECK CONDITION status, set the sense key to ILLEGAL REQUEST, and the additional sense code set to INVALID FIELD IN PARAMETER LIST. The value of the parameter code specific value field is vendor unique. The log pages defined are listed in Table 7-62. Page Codes for Log Parameters ===================================================== Page Code Description ---------- -------------------------------------- 00h Summary List of Supported Pages 01h Buffer Over-Run/Under-Run Counters 02h Write Error Counters 03h Read Error Counters 04h Read Reverse Error Counters 05h Verify Error Counters 06h Non-Media-Related Error Event Counters 07h Last n Error Event List 08h - 2Fh Reserved 30h - 3Eh Vendor Unique 3Fh Reserved ===================================================== Summary List of Supported Log Pages The summary list of supported log pages returns the list of page codes supported by the target. This page is defined in Table 7-63. List of Supported Log Pages ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Reserved | Page Code (00h) | -----|-----------------------------------------------------------------------| 1 | Reserved | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- Page Length (n) ---| 3 | (LSB) | -----|-----------------------------------------------------------------------| 4 Page Code Value (First) | - - -|- - - -| n + 4| Page Code Value (Last) | ============================================================================== This page is supported for the LOG SENSE command and returns the summary list of supported log pages for the specified logical unit to the requesting initiator. If any other pages are supported by the device, then support of page zero is mandatory. IMPLEMENTORS NOTE: Initiators should first request page zero to determine the list of pages supported by the device. The page code value field contains the page code of the supported page. The page is composed of the list of supported page codes returned in ascending order. Counter Type LOG Pages Descriptions Generic Counter Page Format ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Reserved | Page Code | -----|-----------------------------------------------------------------------| 1 | Reserved | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- Page Length (n) ---| 3 | (LSB) | ============================================================================== | Counter Type Parameter Structures Descriptor(s) | ============================================================================== 0 | (MSB) | -----|--- Parameter Code ---| 1 | (LSB) | -----|-----------------------------------------------------------------------| 2 | DU | DS | TSD | ET | TMC |Reserved| FP | -----|-----------------------------------------------------------------------| 3 | Parameter Length (m) | -----|-----------------------------------------------------------------------| 4 | (MSB) | - - -|- - Parameter Code Specific Value - -| 3+m | (LSB) | ============================================================================== See 7.4.1 for definition of page and parameter code fields. This page format is defined for the following page codes: Page Codes for Error Counters ====================================== Page Code Description --------- --------------------------- 01h Buffer Over-Run/Under-Run Counters 02h Write Error Counters 03h Read Error Counters 04h Read Reverse Error Counters 05h Verify Error Counters 06h Non-Media-Related Error Event Counters ====================================== Buffer Over-Run/Under-Run Counters Page Descriptions This page returns one or more buffer over-run/under-run counter descriptors from the logical unit. IMPLEMENTORS NOTE: A buffer over-run or under-run can occur when an initiator does not transmit data to or from the target's buffer fast enough to keep up with reading or writing the media. This can be caused by a slow transfer rate across the SCSI bus or by a high SCSI bus utilization that prevents reconnection by the target. A buffer over-run condition can occur during a read operation when a buffer full condition prevents continued transfer of data from the media to the buffer. A buffer under-run condition can occur during a write operation when a buffer empty condition prevents continued transfer of data to the media from the buffer. Most devices incur a delay at this point while the media is repositioned. Twenty-four buffer over-run and under-run parameter code counters are defined. The target may implement one or more of the defined counters. Three sub-fields are used to define the supported parameter code. The parameter codes are defined in Table 7-66. Buffer Over-Run/Under-Run Parameter Code Definition ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Reserved | -----|-----------------------------------------------------------------------| 1 | Count Basis | Cause | Type | -----|-----------------------------------------------------------------------| The count basis field defines the criteria for incrementing the counter. The following criteria are defined: Count Basis Definition ================================================ Count Basis Description --------- ----------------------------------- 000b Undefined 001b Per Command 010b Per Failed Reconnect 011b Per Latency (e.g., disk revolution) 100b-111b Reserved ================================================ The cause field indicates the reason that the over-run or under-run occurred. The following causes are defined: Cause Field Definition ================================= Cause Description ------- ---------------------- 0h Undefined 1h SCSI Bus Busy 2h Transfer Rate Too Slow 3h-Fh Reserved ================================= The type field indicates whether the counter records under-runs or over- runs. A value of 0b identifies a buffer under-run and a value of 1b identifies a buffer over-run. The counters contain the total number of times a buffer over-run or under- run has occurred since the last time the counter was cleared, via a subsequent LOG SENSE command. The counter shall be incremented for each occurrence of an under-run or over-run condition and can be incremented more than once for multiple occurrences during the execution of a single command. Common Error Counter Page Code Descriptions The following page codes are defined for these common error counter pages. The page and parameter code structure formats are defined in Tables 7-64 and 7-65. Page Codes for Error Counters ====================================== Page Code Description --------- --------------------------- 02h Write Error Counters 03h Read Error Counters 04h Read Reverse Error Counters 05h Verify Error Counters ====================================== When any counter reaches its maximum value, incrementing of all counters in that page shall cease cease until reset (see LOG SELECT command to reset counters). The target shall return a CHECK CONDITION status, if the RLEC field of page 0Ah of MODE parameters field is set to one, with the sense key set to RECOVERED ERROR and the additional sense code set to LOG COUNTER AT MAXIMUM. The target can report this condition via Asynchronous Event Notification (see 6.5.5). Table 7-68 defines the generic parameter codes that can be supported for the page codes defined in Table 7-67. Support of any parameter code is optional. Generic Parameter Codes Definition Parameter Codes for Error Counter Pages =========================================================== Parameter Code Description --------- ------------------------------------------------ 0000h Errors corrected on-the-fly 0001h Errors corrected by other means 0002h Total (e.g., re-writes or re-reads) 0003h Total errors corrected 0004h Total times correction algorithm processed 0005h Total bytes processed 0006h Total uncorrected errors 0007-1000h Reserved 1000-FFFFh Vendor Specific =========================================================== Non-Media-Related Error Page Code (06h) Description The page and parameter code structure formats are defined in Tables 7-64 and 7-65. See 7.4.1 for definition of pages and parameter code fields. This page provides for summing the occurrences of recoverable error events other than write, read, or verify failures. No parameter codes are defined for these events. Parameter Codes Definition Parameter Codes for Non-Media-Related Pages ============================================================ Parameter Code Description ---------- ------------------------------------------------ 0000-1000h Reserved 1000-FFFFh Vendor Specific ============================================================ Event Type LOG Page Descriptions LAST n ERROR EVENTS LIST Last n Error Events Record List Page ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Reserved | Page Code (07h) | -----|-----------------------------------------------------------------------| 1 | Reserved | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- Page Length (n*(4+m)) ---| 3 | (LSB) | ============================================================================== | Last n Error Events Record List Descriptor(s) | ============================================================================== 4 | (MSB) | -----|--- Parameter Code ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | DU | DS | TSD | ET | TMC |Reserved| FP | -----|-----------------------------------------------------------------------| 7 | Parameter Length (m) | -----|-----------------------------------------------------------------------| 8 | (MSB) | - - -|- - Parameter Code Specific Values - -| 7+m | (LSB) | ============================================================================== The page and parameter code structure formats are defined in Tables 7-64 and 7-65. See 7.4.1 for definition of pages and parameter code fields. This page (Table 7-72) provides for, n, optional diagnostic records. The number of these records supported, n, is vendor-specific. Each record contains vendor-specific diagnostic information for a single error encountered by the device. The parameter code associated with each record indicates the relative times at which the errors associated with the records occurred. A lower parameter code value indicates that the error event occurred earlier in time. When the last supported parameter code is used by an error event record, the recording on this page of all subsequent error information shall cease until one or more of the parameters with the highest parameter codes have been reset (see LOG SELECT command). The target shall return a CHECK CONDITION status, if the RLEC field of page 0Ah of MODE parameters field is set to one, with the sense key set to RECOVERED ERROR and the additional sense code set to LOG LIST CODES EXHAUSTED. The target can report this condition via Asynchronous Event Notification (see 6.5.5). Common Device-Type Control Parameters Common Device-Type Control Parameters ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Reserved | Page Code (0Ah) | -----|-----------------------------------------------------------------------| 1 | Parameter Length (06h) | -----|-----------------------------------------------------------------------| 2 | Reserved | RLEC | -----|-----------------------------------------------------------------------| 3 | Queue Algorithm Modifier | Reserved | QErr | DQue | -----|-----------------------------------------------------------------------| 4 | EECA | Reserved | RAENP | UAAENP | EAENP | -----|-----------------------------------------------------------------------| 5 | Reserved | -----|-----------------------------------------------------------------------| 6 | | -----|--- Ready AEN Holdoff Period ---| 7 | | ============================================================================== A report log exception condition (RLEC) bit of one shall cause the target to generate a CHECK CONDITION status in the following cases for the log function: (1) Counter reaches its maximum value and has overflowed, (2) Event parameter code value has reached its maximum value and the highest parameter codes have not been reset. A RLEC bit of zero indicates that the target shall not generate a CHECK CONDITION status for those cases.