15. Optical Memory Devices 15.1. Model for Optical Memory Devices An optical memory device is a is one that can potentially support a variety of optical media, (e.g., read-only, write-once, erasable, or reversible). In several respects an optical memory device is similar to a direct-access device. However optical memory devices typically offer features that are not available with other devices, including very large capacity removable media. These devices often require the functions which are not found in direct- access devices such as logical block update, pre-erasure before writing, or scanning for blank medium and twelve-byte command descriptor blocks. This standard has specific device types for write-once and CD-ROM devices which also use optical media, but are not capable of supporting a several types of optical media. It is possible to implement devices using write-once media as optical memory devices. It is possible to implement devices using read-only media as optical memory devices, however devices using CD-ROM media have certain unique characteristics and should not be implemented as optical memory devices. A model of optical memory devices is complicated by the nature of one of its potential advantages, that it can support media which has different characteristics. There are three types of optical media in general use, read- only, write-once and reversible. Read-only media is typically used as for publishing applications requiring dissemination of large amounts of data, since the data can be replicated on a disk at low cost. Write-once media is used in applications that have large backup or archiving requirements. It is also used in applications that have a need for large amounts of on-line reference information. Reversible media is typically used in applications that need large amounts of temporary storage (e.g., graphics workstations) and can take advantage of removable media. In some applications reversible media drives are used in place of direct-access devices. Reversible media usually needs to be reversed (erased, blanked) before new data can be written. In such cases an erase operation is required before data can be written. Some optical memory devices perform this erase operation implicit with each write operation which typically will impact the data throughput. Some devices can perform the erase as a separately. The ERASE command may be used to erase areas of the medium with a corresponding increase in data throughput on subsequent write operations. Products using optical media should not be implemented as direct-access devices due to the overhead penalty on performance from the emulation and lack of support in direct-access devices to take advantage of the sophisticated features available in with optical memory devices. The type of medium supported by the device and the type of medium currently loaded can be determined by examining the MODE SENSE data. One unique feature of optical memory devices is support of media with mixed types (e.g., media with read-only and write-once areas). The INQUIRY command informs the initiator that the target is an optical memory device; the initiator should then determine the medium type from the MODE SENSE data. The initiator needs to be cognizant of medium type since the devices characteristics can change when the media is changed. Write-once media can have valid data written to a logical block once. This is an important feature where audit trails and permanent archives are needed. Many optical memory devices supporting write-once media have the ability to update a logical block, preserving the previous generation of data. These devices usually provide a means to recover the previous data through use of commands that allow read access to the different generations of data that are stored at the same logical block address. An important requirement in dealing with optical media is determining the which logical blocks are contain written data and which are blank. A blank logical block is one that is properly initialized so that data written to it can be recovered. The logical blocks usually have a flag associated with each that indicates whether they have been written or not. Many of the strategies used to manage write once and erasable media depend on being able to determine the boundary between written and blank areas of the medium. The MEDIUM SCAN command is useful in finding blank areas for subsequent write operations. 15.1.1. Defect Management Defect management can also be performed by use of logical block can be updating in a manner similar to that used by direct-access devices with the REASSIGN BLOCKS command. The advantage of using the updating (which is not supported by direct-access devices) is access to the previous data. The update operation assigns an alternate physical block to the logical block while simultaneously writing the data to the block. Commands are provided to allow the recovery of previous generations of updated blocks. Defect management on optical-memory devices is usually vendor specific. However there are standards for some types of optical-memory media that specify defect management techniques. These standards, where they exist, may supersede the implementation requirements pertaining to error and defect reporting in this standard. 15.1.2. Error Reporting If any of the following conditions occur during the execution of a command the target shall return CHECK CONDITION status. The appropriate sense key and additional sense code should be set. The following table illustrates some error conditions and the applicable sense keys. The table does not provide an exhaustive enumeration of all conditions that may cause the CHECK CONDITION status. Condition Sense Key ---------------------------------------------- ---------------------------- Invalid logical block address ILLEGAL REQUEST Unsupported option requested ILLEGAL REQUEST Target reset or medium change since last command from this initiator UNIT ATTENTION Self diagnostic failed HARDWARE ERROR Unrecovered read error MEDIUM ERROR HARDWARE ERROR Recovered read error RECOVERED ERROR Overrun or other error that might be resolved by repeating the command ABORTED COMMAND Attempt to write on write protected medium DATA PROTECT Attempt to read a blank or previously unwritten block. BLANK CHECK Attempt to write a previously written block and blank checking is enabled. BLANK CHECK Attempt to write on read-only medium. DATA PROTECT In the case of an invalid logical block address, the sense data information field shall be set to the logical block address of the first invalid address. In the case of an attempt to read a blank or previously unwritten block, the sense data information field shall be set to the logical block address of the first blank block encountered. The data read up to that block shall be transferred. In the case of an attempt to write a previously written block and blank checking is enabled, the sense information field shall be set to the logical block address of the first non-blank block encountered. 15.2. Commands for Optical Memory Devices The commands for optical memory devices shall be as shown in Table 15-1 and 15-2. Table 15-1: Commands for Optical Memory Devices(1) ============================================================================== Operation Command Name Code Type Section Page ------------------------------------------------------------------------------ CHANGE DEFINITION 40h O 7.2.1 COMPARE 39h O 7.2.2 COPY 18h O 7.2.3 COPY AND VERIFY 3Ah O 7.2.4 ERASE(10) 2Ch O 15.2.1 ERASE(12) ACh O 15.2.2 FORMAT UNIT 04h O 8.2.1 INQUIRY 12h M 7.2.5 LOCK UNLOCK CACHE 36h O 8.2.2 LOG SELECT 4Ch O 7.2.6 LOG SENSE 4Dh O 7.2.7 MEDIUM SCAN 38h O 15.2.3 MODE SELECT(6) 15h O 7.2.8 MODE SELECT(10) 55h O 7.2.9 MODE SENSE(6) 1Ah O 7.2.10 MODE SENSE(10) 5Ah O 7.2.11 PRE-FETCH 34h O 8.2.3 PREVENT ALLOW MEDIUM REMOVAL 1Eh O 8.2.4 READ(6) 08h O 8.2.5 READ(10) 28h M 8.2.6 READ(12) A8h O 15.2.4 READ BUFFER 3Ch O 7.2.12 READ CAPACITY 25h M 8.2.7 READ DEFECT DATA(10) 37h O 8.2.8 READ DEFECT DATA(12) B7h O 15.2.5 READ GENERATION 29h O 15.2.6 READ LONG 3Eh O 8.2.9 READ UPDATED BLOCK 2Dh O 15.2.7 REASSIGN BLOCKS 07h O 8.2.10 RECEIVE DIAGNOSTIC RESULTS 1Ch O 7.2.13 RELEASE 17h M 8.2.11 REQUEST SENSE 03h M 7.2.14 RESERVE 16h M 8.2.12 REZERO UNIT 01h O 8.2.13 ============================================================================= Table 15-2: Commands for Optical Memory Devices(2) ============================================================================== Operation Command Name Code Type Section Page ------------------------------------------------------------------------------ SEARCH DATA EQUAL(10) 31h O 8.2.14.1 SEARCH DATA EQUAL(12) B1h O 15.2.8 SEARCH DATA HIGH(10) 30h O 8.2.14.2 SEARCH DATA HIGH(12) B0h O 15.2.8 SEARCH DATA LOW(10) 32h O 8.2.14.3 SEARCH DATA LOW(12) B2h O 15.2.8 SEEK(6) 0Bh O 8.2.15 SEEK(10) 2Bh O 8.2.15 SEND DIAGNOSTIC 1Dh M 7.2.15 SET LIMITS(10) 33h O 8.2.16 SET LIMITS(12) B3h O 15.2.9 START STOP UNIT 1Bh O 8.2.17 SYNCHRONIZE CACHE 35h O 8.2.18 TEST UNIT READY 00h M 7.2.16 UPDATE BLOCK 3Dh O 15.2.10 VERIFY(10) 2Fh O 15.2.11 VERIFY(12) AFh O 15.2.12 WRITE(6) 0Ah O 8.2.20 WRITE(10) 2Ah M 15.2.13 WRITE(12) AAh O 15.2.14 WRITE AND VERIFY(10) 2Eh O 15.2.15 WRITE AND VERIFY(12) AEh O 15.2.16 WRITE BUFFER 3Bh O 7.2.17 WRITE LONG 3Fh O 8.2.23 ============================================================================= Key: M = Command implementation is mandatory. O = Command implementation is optional. The following codes are vendor specific: 20h, 21h, 22h, 23h, and C0h through FFh. All remaining codes for optical memory devices are reserved for future standardization. 15.2.1. ERASE(10) Command Table 15-3: ERASE(10) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (2Ch) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | Reserved | ERA |Reserved| RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | Reserved | -----|-----------------------------------------------------------------------| 7 | (MSB) | -----|--- Transfer Length ---| 8 | (LSB) | -----|-----------------------------------------------------------------------| 9 | Control | ============================================================================== The ERASE(10) command (Table 15-3) requests that the target erase the specified number of blocks starting at the specified logical block address on the medium. As used here, "erased" means either the medium shall be erased, or a pattern shall be written on the medium that appears to the target as no data present. The blocks erased shall be considered blank for purposes of blank checking (see 15.1). The previous data recorded on the medium, if any, shall not be recoverable. The erase all (ERA) bit set to one indicates that all remaining blocks on the medium shall be erased. If the ERA bit is set to one and if the number of blocks is not zero, the target shall return CHECK CONDITION, and the sense key shall be set to ILLEGAL REQUEST, with an additional sense code of INVALID FIELD IN CDB. See 8.2.2 for a description of the RelAdr bit and logical block address field. The transfer length specifies the number of contiguous logical blocks that shall be erased when the ERA bit is zero. If the ERA bit is zero a transfer length of zero indicates that no blocks shall be erased. This condition shall not be considered as an error and no data shall be erased. Any other value indicates the number of logical blocks that shall be erased. This command shall be terminated with a status of RESERVATION CONFLICT if any reservation access conflict (see 8.2.12) exists and no data shall be erased. IMPLEMENTORS NOTE: This command allows the user to separate the erase and write operations. This may increase system performance in certain applications. 15.2.2. ERASE(12) Command Table 15-4: ERASE(12) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (ACh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | Reserved | ERA |Reserved| RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | (MSB) | -----|--- ---| 7 | | -----|--- Transfer Length ---| 8 | | -----|--- ---| 9 | (LSB) | -----|-----------------------------------------------------------------------| 10 | Reserved | -----|-----------------------------------------------------------------------| 11 | Control | ============================================================================== The ERASE(12) command (Table 15-4) requests that the target erase the specified number of blocks starting at the specified logical block address on the medium. See the ERASE(10) command (15.2.1) for a description of the fields in this command. 15.2.3. MEDIUM SCAN Command Table 15-5: MEDIUM SCAN Command ============================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (38h) | ------|----------------------------------------------------------------------| 1 | Logical Unit Number | WBS | ASA | RSD | PRA | RelAdr | ------|----------------------------------------------------------------------| 2 | (MSB) | ------|--- ---| 3 | | ------|--- Logical Block Address ---| 4 | | ------|--- ---| 5 | (LSB) | ------|----------------------------------------------------------------------| 6 | Reserved | ------|----------------------------------------------------------------------| 7 | Reserved | ------|----------------------------------------------------------------------| 8 | Parameter List Length | ------|----------------------------------------------------------------------| 9 | Control | ============================================================================== The MEDIUM SCAN command (Table 15-5) requests the target to scan the medium for a contiguous set of written or blank logical blocks. A written block search (WBS) bit of zero indicates that the scan is for blank blocks. A WBS bit of one indicates that the scan is for written blocks. An advanced scan algorithm (ASA) bit of zero indicates that the scan area is scanned in sequential order (as selected by the RSD bit). An ASA bit of one indicates to the target that the written and blank areas within the scan area form contiguous extents (as opposed to scattered blocks). This indication is advisory to the target. IMPLEMENTORS NOTE: The purpose of this bit is to allow the target to use a more advanced algorithm (such as a binary search) to locate the requested blocks. A reverse scan direction (RSD) bit of zero indicates the scan shall begin with the first logical block of the scan area. A RSD bit of one indicates the scan shall begin with the last logical block of the scan area. A partial results acceptable (PRA) bit of zero indicates that the scan shall not be considered satisfied until a contiguous set of blocks is found within the scan area which is greater than or equal in size to the number of blocks requested, and meets the other criteria specified in the command descriptor block. A PRA bit of one indicates that the scan may be satisfied by a contiguous set of blocks within the scan area which is less than the number of blocks requested, and meets the other criteria specified in the command descriptor block. In this case, the target shall determine the largest contiguous set of blocks in the scan area for reporting to the initiator. See 8.2.2 for a description of the RelAdr bit and logical block address field. The parameter list length specifies the length in bytes of the parameter list that shall be transferred during the DATA OUT phase. A parameter list length of zero indicates that the number of blocks requested field has a value of one, and the number of blocks to scan field has a value of zero. This condition shall not be considered an error. The contents of the parameter list are specified in Table 15-6. A link bit of zero indicates a non-linked command and if the scan is satisfied, the command shall be terminated with a CONDITION MET status. A REQUEST SENSE command can then be issued to determine the starting logical block address of the area that meets the request. If the scan is not satisfied and no error occurs, the command shall be terminated with GOOD status. A link bit of one indicates a command is linked to the MEDIUM SCAN command and if the search is satisfied, CONDITION MET status is returned and the next command is executed. If the RelAdr bit in the next command is one, the logical block address of the next command is used as a displacement from the logical block address at which the search was satisfied. If a linked scan is not satisfied, the command is terminated with a CHECK CONDITION status. A REQUEST SENSE command may then be issued. A REQUEST SENSE command following a satisfied MEDIUM SCAN command shall: (1) Return a sense key of EQUAL if the scan was satisfied by a contiguous set of blocks equal in size to the number of blocks requested. If the scan was satisfied by a contiguous set of blocks not equal in size to the number of blocks requested, then a sense key of NO SENSE shall be returned. (2) Return the valid bit set to one. (3) Return the logical block address of the first logical block of the contiguous set of blocks that satisfied the scan criteria in the information bytes. (4) Return the number of contiguous logical blocks meeting the scan criteria in the command specific information bytes. A REQUEST SENSE command following an unsatisfied MEDIUM SCAN command shall: (1) Return a sense key of NO SENSE if no errors occurred during the command execution. (2) Return the valid bit set to zero. Table 15-6: MEDIUM SCAN Parameter List ============================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | (MSB) | ------|--- ---| 1 | | ------|--- Number of Blocks Requested ---| 2 | | ------|--- ---| 3 | (LSB) | ------|----------------------------------------------------------------------| 4 | (MSB) | ------|--- ---| 5 | | ------|--- Number of Blocks to Scan ---| 6 | | ------|--- ---| 7 | (LSB) | ============================================================================== The number of blocks requested field specifies the number of blocks that meet the specified requirements. The number of blocks requested field, if set to zero, indicates that the scan shall not take place. This shall not be considered an error condition. The number of blocks to scan field specifies the length in blocks of the area to be scanned on the medium. The number of blocks to scan field, if set to zero, indicates that the scan shall continue for all remaining blocks on the medium or until the scan is satisfied. See 15.1.3 for a description of error handling. 15.2.4. READ(12) Command Table 15-7: READ(12) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (A8h) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | DPO | FUA | Reserved | RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | (MSB) | -----|--- ---| 7 | | -----|--- Transfer Length ---| 8 | | -----|--- ---| 9 | (LSB) | -----|-----------------------------------------------------------------------| 10 | Reserved | -----|-----------------------------------------------------------------------| 11 | Control | ============================================================================== The READ(12) command (Table 15-7) requests that the target transfer data to the initiator from the medium. See the READ(10) command (8.2.6) for a complete description of the fields in this command. 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 | Reserved | -----|-----------------------------------------------------------------------| 3 | Reserved | -----|-----------------------------------------------------------------------| 4 | Reserved | -----|-----------------------------------------------------------------------| 5 | Reserved | -----|-----------------------------------------------------------------------| 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 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. 15.2.6. READ GENERATION Command Table 15-10: READ GENERATION Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (29h) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | Reserved | RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | Reserved | -----|-----------------------------------------------------------------------| 7 | Reserved | -----|-----------------------------------------------------------------------| 8 | Allocation Length | -----|-----------------------------------------------------------------------| 9 | Control | ============================================================================== The READ GENERATION command (Table 15-10) requests that the target transfer to the initiator the maximum generation address for the logical block specified. See 8.2.2 for a description of the RelAdr bit and logical block address field. The READ GENERATION data is defined in Table 15-11. Table 15-11: Maximum Generation Data Block ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | (MSB) | -----|--- Maximum Generation Address ---| 1 | (LSB) | -----|-----------------------------------------------------------------------| 2 | Reserved | -----|-----------------------------------------------------------------------| 3 | Reserved | ============================================================================== The maximum generation address field defines the maximum generation address available for the logical block address specified. 15.2.7. READ UPDATED BLOCK(10) Command Table 15-12: READ UPDATED BLOCK(10) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (2Dh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | DPO | FUA | Reserved | RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | Latest | (MSB) | -----|------------ Generation Address | 7 | (LSB) | -----|-----------------------------------------------------------------------| 8 | Reserved | -----|-----------------------------------------------------------------------| 9 | Control | ============================================================================== The READ UPDATED BLOCK(10) command (Table 15-12) requests that the target transfer data to the initiator from the specified generation and logical block. See 8.2.6 for a description of the cache control bits (DPO and FUA). See 8.2.2 for a description of the RelAdr bit and logical block address field. One block of data is transferred during the DATA IN phase. The latest bit determines the meaning of the generation address field. A latest bit of zero indicates that the generation address is specified relative to the first generation of the block; generation address zero specifies the first generation. Increasing generation addresses specify later generations. A latest bit of one indicates that the generation address is specified relative to the latest generation of the block; generation address zero specifies the most recent generation. Increasing generation addresses specify earlier generations. If the requested generation does not exist, the command shall be terminated with CHECK CONDITION status. The sense key shall be set to BLANK CHECK, and the additional sense code shall be set to GENERATION DOES NOT EXIST. This command shall be terminated with a status of RESERVATION CONFLICT if any reservation access conflict (see 8.2.12) exists and no data shall be transferred. 15.2.8. SEARCH DATA(12) Commands Table 15-13: SEARCH DATA(12) Commands ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (B0h, B1h, B2h) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | Invert | Reserved | SpnDat | RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | (MSB) | -----|--- ---| 7 | | -----|--- Transfer Length ---| 8 | | -----|--- ---| 9 | (LSB) | -----|-----------------------------------------------------------------------| 10 | Reserved | -----|-----------------------------------------------------------------------| 11 | Control | ============================================================================== The SEARCH DATA(12) commands (Table 15-13) search one or more logical blocks for equality or inequality to a data pattern. See the SEARCH DATA(10) commands (8.2.14) for a description of the fields in this command. 15.2.9. SET LIMITS(12) Command Table 15-14: SET LIMITS(12) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (B3h) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | Reserved | RdInh | WrInh | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | (MSB) | -----|--- ---| 7 | | -----|--- Number of Blocks ---| 8 | | -----|--- ---| 9 | (LSB) | -----|-----------------------------------------------------------------------| 10 | Reserved | -----|-----------------------------------------------------------------------| 11 | Control | ============================================================================== The SET LIMITS(12) command (Table 15-14) defines the range within which subsequent linked commands may operate. See the SET LIMITS(10) command (8.2.16) for a description of the fields in this command. 15.2.10. UPDATE BLOCK Command Table 15-15: UPDATE BLOCK Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (3Dh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | Reserved | RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | Reserved | -----|-----------------------------------------------------------------------| 7 | Reserved | -----|-----------------------------------------------------------------------| 8 | Reserved | -----|-----------------------------------------------------------------------| 9 | Control | ============================================================================== The UPDATE BLOCK command (Table 15-15) requests that the target logically replace data on the medium with the data sent during the DATA OUT phase. See 8.2.2 for a description of the RelAdr bit and logical block address field. One block of data is transferred during the DATA OUT phase. IMPLEMENTORS NOTE: See the MODE Parameters (15.3) for a description of the behavior of the UPDATE BLOCK command relative to the enable blank check (EBC) bit. This standard does not define the result of a WRITE command issued to a block previously updated by an UPDATE BLOCK command when blank checking is disabled. IMPLEMENTORS NOTE: It is recommended that the target inhibit this behavior. A logical block may be updated until the alternate block area is exhausted. The alternate blocks used for the update operation shall not be reported in the READ CAPACITY data. If the alternate block area is exhausted the command shall be terminated with CHECK CONDITION and the sense key shall be set to MEDIUM ERROR, and the additional sense code set to NO DEFECT SPARE LOCATION AVAILABLE. If the report updated block read parameter specifies posting of recovered errors for a read operation of a logical block that has had a successful update operation performed occurs the command shall terminate with a CHECK CONDITION status. The sense key shall be set to RECOVERED ERROR and the additional sense code set to UPDATED BLOCK READ. 15.2.11. VERIFY(10) Command Table 15-16: VERIFY Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (2Fh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | DPO |Reserved| BlkVfy | BytChk | RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | Reserved | -----|-----------------------------------------------------------------------| 7 | (MSB) | -----|--- Verification Length | 8 | (LSB) | -----|-----------------------------------------------------------------------| 9 | Control | ============================================================================== The VERIFY command (Table 15-16) requests that the target verify the data on the medium. If the MODE SELECT command is implemented, and the Verify Error Recovery Parameters page is also implemented, then the current settings in that page define the verification criteria. If the Verify Error Recovery Parameters page is not implemented, then the verification criteria is vendor unique. A byte check (BytChk) bit of zero causes a medium verification to be performed with no data comparison. A BytChk bit of one causes a byte-by-byte compare of the data written on the medium and the data transferred from the initiator. The data shall be transferred as it would be for a WRITE command. If the compare is unsuccessful, for any reason, the target shall return CHECK CONDITION status and the sense key shall be set to MISCOMPARE. A blank verify (BlkVfy) bit of one causes a verification that the blocks are blank. If the BytChk is one when the BlkVfy bit is one, this shall be considered an error. The target shall return CHECK CONDITION status and the sense key shall be set to ILLEGAL REQUEST, and the additional sense code set to INVALID FIELD IN CDB. See 8.2.6 for a description of the cache control bits (DPO). See 8.2.2 for a description of the RelAdr bit and logical block address field. The verification length specifies the number of contiguous logical blocks of data or blanks that shall be verified. A verification length of zero indicates that no logical blocks shall be verified. This condition shall not be considered as an error. Any other value indicates the number of logical blocks that shall be verified. 15.2.12. VERIFY(12) Command Table 15-17: VERIFY(12) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (AFh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | DPO |Reserved| BlkVfy | BytChk | RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | (MSB) | -----|--- ---| 7 | | -----|--- Verification Length ---| 8 | | -----|--- ---| 9 | (LSB) | -----|-----------------------------------------------------------------------| 10 | Reserved | -----|-----------------------------------------------------------------------| 11 | Control | ============================================================================== The VERIFY(12) command (Table 15-17) requests that the target verify the data on the medium. See the VERIFY(10) command (15.2.11) for a description of the fields in this command. 15.2.13. WRITE(10) Command Table 15-18: WRITE(10) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (2Ah) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | DPO | FUA | EBP |Reserved| RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | Reserved | -----|-----------------------------------------------------------------------| 7 | (MSB) | -----|--- Transfer Length | 8 | (LSB) | -----|-----------------------------------------------------------------------| 9 | Control | ============================================================================== The WRITE(10) command (Table 15-18) requests that the target write the data transferred from the initiator to the medium. An erase by-pass (EBP) bit of zero indicates that the device will default to the normal write operation. An EBP bit of one indicates that the target is allowed to by-pass the erase operation prior to writing the data. When accessing write-once media, the EBP bit shall be considered reserved. See 8.2.6 for a description of the cache control bits (DPO and FUA). See 8.2.2 for a description of the RelAdr bit and logical block address field. The transfer length specifies the number of contiguous logical blocks of data that shall be transferred. A transfer length of zero indicates that no data shall be transferred. This condition shall not be considered as an error and no data shall be written. Any other value indicates the number of logical blocks that shall be transferred. This command shall be terminated with a status of RESERVATION CONFLICT if any reservation access conflict (see 8.2.12) exists and no data shall be written. 15.2.14. WRITE(12) Command Table 15-19: WRITE(12) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (AAh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | DPO | FUA | EBP |Reserved| RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | (MSB) | -----|--- ---| 7 | | -----|--- Transfer Length ---| 8 | | -----|--- ---| 9 | (LSB) | -----|-----------------------------------------------------------------------| 10 | Reserved | -----|-----------------------------------------------------------------------| 11 | Control | ============================================================================== The WRITE(12) command (Table 15-19) requests that the target write the data transferred from the initiator to the medium. See the WRITE(10) command (15.2.13) for a description of the fields in this command. 15.2.15. WRITE AND VERIFY(10) Command Table 15-20: WRITE AND VERIFY(10) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (2Eh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | DPO |Reserved| EBP | BytChk | RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | Reserved | -----|-----------------------------------------------------------------------| 7 | (MSB) | -----|--- Transfer Length | 8 | (LSB) | -----|-----------------------------------------------------------------------| 9 | Control | ============================================================================== The WRITE AND VERIFY(10) command (Table 15-20) requests that the target write the data transferred from the initiator to the medium and then verify that the data is correctly written. If the MODE SELECT command is implemented, and the Verify Error Recovery Parameters page is also implemented, then the current settings in that page define the verification criteria. If the Verify Error Recovery Parameters page is not implemented, then the verification criteria is vendor unique. A byte check (BytChk) bit of zero causes a medium verification to be performed with no data comparison. A BytChk bit of one causes a byte-by-byte compare of the data written on the medium and the data transferred from the initiator. The data shall be transferred as it would be for a WRITE command. If the compare is unsuccessful, for any reason, the target shall return CHECK CONDITION status and the sense key shall be set to MISCOMPARE. An erase by-pass (EBP) bit of zero indicates that the device will default to the normal write operation. An EBP bit of one indicates that the target is allowed to by-pass the erase operation prior to writing the data. When accessing write-once media, the EBP bit shall be considered reserved. See 8.2.6 for a description of the cache control bits (DPO). See 8.2.2 for a description of the RelAdr bit and logical block address field. The transfer length specifies the number of contiguous logical blocks of data that shall be transferred. A transfer length of zero indicates that no logical blocks shall be transferred. This condition shall not be considered as an error and no data shall be written. Any other value indicates the number of logical blocks that shall be transferred. 15.2.16. WRITE AND VERIFY(12) Command Table 15-21: WRITE AND VERIFY(12) Command ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | Operation Code (AEh) | -----|-----------------------------------------------------------------------| 1 | Logical Unit Number | DPO |Reserved| EBP | BytChk | RelAdr | -----|-----------------------------------------------------------------------| 2 | (MSB) | -----|--- ---| 3 | | -----|--- Logical Block Address ---| 4 | | -----|--- ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | (MSB) | -----|--- ---| 7 | | -----|--- Transfer Length ---| 8 | | -----|--- ---| 9 | (LSB) | -----|-----------------------------------------------------------------------| 10 | Reserved | -----|-----------------------------------------------------------------------| 11 | Control | ============================================================================== The WRITE AND VERIFY(12) command (Table 15-21) requests that the target write the data transferred from the initiator to the medium and then verify that the data is correctly written. See the WRITE AND VERIFY(10) command (15.2.15) for a description of the bits in this command. 15.3. Parameters for Optical Memory Devices 15.3.1. Diagnostic Parameters This section defines the descriptors and pages for diagnostic parameters used with optical memory devices. The diagnostic page codes for optical memory devices are defined in Table 15-22. Table 15-22: Diagnostic Page Codes ============================================================================== Page Code Description Section ------------------------------------------------------------------------------ 00h List of Supported Parameters Page 7.3.1.1 01h - 3Fh Reserved (for all device type pages) 40h Translate Address Page 8.3.1 41h - 7Fh Reserved 80h - FFh Vendor specific pages ============================================================================== 15.3.2. Log Parameters This section defines the descriptors and pages for log parameters used with optical memory devices. The log page codes for optical memory devices are defined in Table 15-23. Table 15-23: Log Page Codes ============================================================================== Page Code Description Section ------------------------------------------------------------------------------ 01h Buffer Over-Run/Under-Run Page 7.3.2.1 03h Error Counter Page (Read) Page 7.3.2.2 05h Error Counter Page (Verify) Page 7.3.2.2 02h Error Counter Page (Write) Page 7.3.2.2 07h Last n Error Events Page 7.3.2.3 00h List of Supported Parameters Page 7.3.2.5 06h Non-Media Error Page 7.3.2.4 04h Reserved 08h - 2Fh Reserved 30h - 3Eh Vendor Specific 3Fh Reserved ============================================================================== 15.3.3. Mode Parameters This section defines the descriptors and pages for mode parameters used with optical memory devices. The mode parameter list, including the mode parameter header and mode block descriptor are defined in 7.3.3. The medium-type code field is contained in the mode parameter header (see Table 7-61 and 7-62). Table 15-24 defines the medium-type code values used for optical memory devices. Table 15-24: Optical Memory Medium-Type Codes ============================================================================== Code Value Medium Type ---------- ------------------------------------------------------------------ 00h Default (only one medium type supported) 01h Optical Read Only medium 02h Optical Write Once medium 03h Optical Reversible or Erasable medium 04h Combination of Read only and Write Once medium 05h Combination of Read only and Reversible or Erasable medium 06h Combination of Write Once and Reversible or Erasable medium 07h - 7Fh RESERVED 80h - FFh Vendor unique ============================================================================== The device specific parameter field is contained in the mode parameter header (see Table 7-61 and 7-62). Table 15-25 defines the device specific parameter values used for optical memory devices. Table 15-25: Optical Memory Device Specific Parameter ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ============================================================================== | WP | Reserved | Cache | Reserved | EBC | ============================================================================== The WP bit is reserved for the MODE SELECT command. For the MODE SENSE command, a write protected (WP) bit of zero indicates that the medium is write enabled. A WP bit of one indicates that the medium is write protected. For read-only media the WP bit is reserved. The cache bit is reserved for the MODE SELECT command. For the MODE SENSE command, a cache bit of zero indicates that the target does not contain a cache memory. A cache bit of one indicates that the target contains a cache memory and supports the cache control bits (see 8.2.6). For the MODE SELECT command, an enable blank check (EBC) bit of zero advises the target to disable the blank checking operation of the medium during write operations or during an UPDATE BLOCK command. An EBC bit of one enables blank checking. If a non-blank block is found during a write operation, the command shall be terminated with a CHECK CONDITION status and the sense key shall be set to BLANK CHECK. If a blank block is found during an UPDATE BLOCK command, the command shall be terminated with a CHECK CONDITION status and the sense key shall be set to BLANK CHECK. For read-only media the EBC bit is reserved. For the MODE SENSE command, an enable blank check (EBC) bit of zero indicates that blank checking of the medium during write operations is disabled. An EBC bit of one indicates that blank checking during write and update operations is enabled. For read-only media the EBC bit is reserved. The density code field is contained in the mode parameter block descriptor (see Table 7-63). Table 15-26 defines the density code values used for optical memory devices. Table 15-26: Optical Memory Density Codes ============================================================================== Density Optical Media Code ------- --------------------------------------------------------------------- 00h Default density (currently mounted density) Diameter Sector Reference mm (inch) Type Size Tracks Sides Servo Standard Note ---------- ---- -------- ------ ----- ----- ---------- ---- 01h 86 (3.5) R/W 512/1024 12500 1 660-D 1 02h 89 (3.5) R/W 512/1024 12500 2 581-D 1 03h 130 (5.25) R/W 512/1024 18750 2 CS 607-I 1 04h 130 (5.25) W-O 512/1024 30000 2 SS 655-D 1,2 05h 130 (5.25) W-O 512/1024 20000 2 SS 659-D 1,3 06h 130 (5.25) W-O 512/1024 18750 2 CS 457-D 1 07h 200 (8.0) 407-D 1,4 08h 300 (12.0) 1024 2 408-D 1,4 09h 356 (14.0) 1024 56350 2 456-D 1 80h - FFh Vendor unique All others Reserved ============================================================================== Key: Type Servo ----------------------------- ------------------------------ R/W Erasable CS Continuous Servo W-O Write Once SS Sampled Servo R/O Read Only NOTES: (1) The reference standard refers to an ANSI X3B11 project under development. The project may have several documents describing different aspects of the media. Please contact the Secretariat for current information on status and availability. (2) RZ modulation. (3) 4/15 modulation. (4) This project is not presently active. The mode page codes for optical memory devices are shown in Table 15-27. Table 15-27: Mode Page Codes ============================================================================== Page Code Description Section ------------------------------------------------------------------------------ 08h Caching Page 8.3.3.1 0Ah Control Mode Page 7.5.3.1 02h Disconnect-Reconnect Page 7.3.3.2 0Bh Medium Types Supported Page 8.3.3.4 06h Optical Memory Page 15.3.3.1 09h Peripheral Device Page 7.3.3.3 01h Read-Write Error Recovery Page 8.3.3.6 07h Verify Error Recovery Page 8.3.3.8 03h - 05h Reserved 0Ch - 1Fh Reserved 3Fh Returns all pages (valid only for the MODE SENSE command) 00h Vendor specific (does not require page format) 20h - 3Eh Vendor specific ============================================================================== 15.3.3.1. Optical Memory Page Table 15-28: Optical Memory Page ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | PS |Reserved| Page Code (06h) | -----|-----------------------------------------------------------------------| 1 | Parameter Length (02h) | -----|-----------------------------------------------------------------------| 2 | Reserved | RUBR | -----|-----------------------------------------------------------------------| 3 | Reserved | ============================================================================== The optical memory page (Table 15-28) defines parameters for control of optical memory devices. The parameters savable (PS) bit is only used with the MODE SENSE command. This bit is reserved with the MODE SELECT command. A PS bit of one indicates that the target is capable of saving the page in a non-volatile vendor- specific location. A report updated block read (RUBR) bit of zero indicates the target shall not report an error when a command performs a successful read of a block that has been updated. A RUBR bit of one indicates the target shall terminate a command that performs a read of a block that has been updated with CHECK CONDITION status, the sense key set to RECOVERED ERROR, the additional sense code set to UPDATED BLOCK READ, and the data shall be transferred to the initiator. The default state of the RUBR bit for write-once devices (as reported in the INQUIRY command) shall be one. 15.4. Glossary for Optical Memory Devices blank. The logical block contains no information detectable by the target, or is written with a pattern that appears to the target as no data present. The logical block is considered ready for a write operation. generation. Indicates a relative revision level of a logical block that has been updated via the UPDATE BLOCK command. A logical block that has never been updated has only one generation associated with it. read-only medium. This is medium that may not be written by the initiator. The media contains data prepared in a manner not defined by this standard. update. To write new data to a logical block without destroying the previous data. After a block has been updated, a normal read returns the most recent generation of the data. Earlier generations are still available after the update. write-once medium. This is medium that may be written only once by the initiator. Logical blocks on write-once media that have not been written are considered blank. Logical blocks on write-once media that have been written may not be written again.