16 Optical memory devices

16.1 Model for optical memory devices

An optical memory device is a device 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 that 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 that also use optical media, but are not capable of supporting several types of optical media. A device that uses write-once media can be an optical memory device. Devices that use read-only media can be 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 are typically used 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 are used in applications that have large backup or archiving requirements. It is also used in applications that need large amounts of on-line reference information. Reversible media is typically used in applications that need large amounts of temporary storage (e.g. a graphics workstation), and can take advantage of removable media. In some applications, reversible media drives are used in place of direct-access devices.

Reversible media usually need 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 that typically impacts the data throughput. Some devices can perform the erase 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 the lack of support in direct-access devices to take advantage of the sophisticated features available 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 device's characteristics can change when the media are 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 which logical blocks 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.

16.1.1 Defect management

Defect management can be performed on logical blocks by 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 International Standard.

16.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 list illustrates some error conditions and the applicable sense keys. The list 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 or
	                                       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 when blank checking is enabled, the sense information field shall be set to the logical block address of the first non-blank block encountered.

16.2 Commands for optical memory devices

The commands for optical memory devices shall be as shown in table 299.

Table 299 - Commands for optical memory devices

+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| COMPARE                             |    39h     |   O  |   8.2.2    |
| COPY                                |    18h     |   O  |   8.2.3    |
| COPY AND VERIFY                     |    3Ah     |   O  |   8.2.4    |
| ERASE(10)                           |    2Ch     |   O  |  16.2.1    |
| ERASE(12)                           |    ACh     |   O  |  16.2.2    |
| FORMAT UNIT                         |    04h     |   O  |   9.2.1    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOCK UNLOCK CACHE                   |    36h     |   O  |   9.2.2    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MEDIUM SCAN                         |    38h     |   O  |  16.2.3    |
| MODE SELECT(6)                      |    15h     |   O  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   O  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| PRE-FETCH                           |    34h     |   O  |   9.2.3    |
| PREVENT ALLOW MEDIUM REMOVAL        |    1Eh     |   O  |   9.2.4    |
| READ(6)                             |    08h     |   O  |   9.2.5    |
| READ(10)                            |    28h     |   M  |   9.2.6    |
| READ(12)                            |    A8h     |   O  |  16.2.4    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| READ CAPACITY                       |    25h     |   M  |   9.2.7    |
| READ DEFECT DATA(10)                |    37h     |   O  |   9.2.8    |
| READ DEFECT DATA(12)                |    B7h     |   O  |  16.2.5    |
| READ GENERATION                     |    29h     |   O  |  16.2.6    |
| READ LONG                           |    3Eh     |   O  |   9.2.9    |
| READ UPDATED BLOCK                  |    2Dh     |   O  |  16.2.7    |
| REASSIGN BLOCKS                     |    07h     |   O  |   9.2.10   |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| RELEASE                             |    17h     |   M  |   9.2.11   |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| RESERVE                             |    16h     |   M  |   9.2.12   |
| REZERO UNIT                         |    01h     |   O  |   9.2.13   |
| SEARCH DATA EQUAL(10)               |    31h     |   O  |   9.2.14.1 |
| SEARCH DATA EQUAL(12)               |    B1h     |   O  |  16.2.8    |
| SEARCH DATA HIGH(10)                |    30h     |   O  |   9.2.14.2 |
| SEARCH DATA HIGH(12)                |    B0h     |   O  |  16.2.8    |
| SEARCH DATA LOW(12)                 |    B2h     |   O  |  16.2.8    |
| SEEK(6)                             |    0Bh     |   O  |   9.2.15   |
| SEEK(10)                            |    2Bh     |   O  |   9.2.15   |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| SET LIMITS(10)                      |    33h     |   O  |   9.2.16   |
| SET LIMITS(12)                      |    B3h     |   O  |  16.2.9    |
| START STOP UNIT                     |    1Bh     |   O  |   9.2.17   |
| SYNCHRONIZE CACHE                   |    35h     |   O  |   9.2.18   |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| UPDATE BLOCK                        |    3Dh     |   O  |  16.2.10   |
| VERIFY(10)                          |    2Fh     |   O  |  16.2.11   |
| VERIFY(12)                          |    AFh     |   O  |  16.2.12   |
| WRITE(6)                            |    0Ah     |   O  |   9.2.20   |
| WRITE(10)                           |    2Ah     |   M  |  16.2.13   |
| WRITE(12)                           |    AAh     |   O  |  16.2.14   |
| WRITE AND VERIFY(10)                |    2Eh     |   O  |  16.2.15   |
| WRITE AND VERIFY(12)                |    AEh     |   O  |  16.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
| WRITE LONG                          |    3Fh     |   O  |   9.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.

16.2.1 ERASE(10) command

The ERASE(10) command (see table 300) 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 16.1). The previous data recorded on the medium, if any, shall not be recoverable.

Table 300 - 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 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 9.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 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 9.2.12) exists and no data shall be erased.

NOTE 195 This command allows the user to separate the erase and write operations. This may increase system performance in certain applications.

16.2.2 ERASE(12) command

The ERASE(12) command (see table 301) requests that the target erase the specified number of blocks starting at the specified logical block address on the medium.

Table 301 - 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                                     |
+=============================================================================+ 
See the ERASE(10) command (16.2.1) for a description of the fields in this command.

16.2.3 MEDIUM SCAN command

The MEDIUM SCAN command (see table 302) requests that the target to scan the medium for a contiguous set of written or blank logical blocks.

Table 302 - 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                                    |
+=============================================================================+ 
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.

NOTE 196 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 that is at least 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 that is less than the number of blocks requested, and meets the other criteria specified in the command descriptor block.

See 9.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 303.

Table 303 - 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) |
+=============================================================================+ 
A link bit of zero indicates a non-linked command; 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 that a command is linked to the MEDIUM SCAN command; 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:

A REQUEST SENSE command following an unsatisfied MEDIUM SCAN command shall:

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 16.1.2 for a description of error reporting.

16.2.4 READ(12) command

The READ(12) command (see table 304) requests that the target transfer data to the initiator from the medium. See the READ(10) command (9.2.6) for a complete description of the fields in this command.

Table 304 - 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                                     |
+=============================================================================+ 

16.2.5 READ DEFECT DATA(12) command

The READ DEFECT DATA(12) command (see table 305) requests that the target transfer the medium defect data to the initiator. See the READ DEFECT DATA(10) command (9.2.8) for a description of the fields in this command.

Table 305 - 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) list header (see table 306) contains an eight byte header, followed by zero or more defect descriptors.

Table 306 - 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 (see 9.2.1.1) for a description of the fields in this header.

16.2.6 READ GENERATION command

The READ GENERATION command (see table 307) requests that the target transfer to the initiator the maximum generation address for the logical block specified.

Table 307 - 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                                     |
+=============================================================================+ 
See 9.2.2 for a description of the RelAdr bit and logical block address field.

The READ GENERATION data is defined in table 308.

Table 308 - 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.

16.2.7 READ UPDATED BLOCK(10) command

The READ UPDATED BLOCK(10) command (see table 309) requests that the target transfer data to the initiator from the specified generation and logical block.

Table 309 - 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                                     |
+=============================================================================+ 
See 9.2.6 for a description of the cache control bits (DPO and FUA). See 9.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 9.2.12) exists and no data shall be transferred.

16.2.8 SEARCH DATA(12) commands

The SEARCH DATA(12) commands (see table 310) search one or more logical blocks for equality or inequality to a data pattern. See the SEARCH DATA(10) commands (9.2.14) for a description of the fields in this command.

Table 310 - 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                                     |
+=============================================================================+ 

16.2.9 SET LIMITS(12) command

The SET LIMITS(12) command (see table 311) defines the range within which subsequent linked commands may operate. See the SET LIMITS(10) command (9.2.16) for a description of the fields in this command.

Table 311 - 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                                     |
+=============================================================================+
    

16.2.10 UPDATE BLOCK command

The UPDATE BLOCK command (see table 312) requests that the target logically replace data on the medium with the data sent during the DATA OUT phase.

Table 312 - 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                                     |
+=============================================================================+ 
See 9.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.

NOTE 197 See the MODE Parameters (16.3) for a description of the behaviour 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.

NOTE 198 It is recommended that the target inhibit this behaviour.

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.

16.2.11 VERIFY(10) command

The VERIFY command (see table 313) requests that the target verify the data on the medium.

Table 313 - 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                                     |
+=============================================================================+ 
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 9.2.6 for a description of the cache control bits (DPO). See 9.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.

16.2.12 VERIFY(12) command

The VERIFY(12) command (see table 314) requests that the target verify the data on the medium. See the VERIFY(10) command (16.2.11) for a description of the fields in this command.

Table 314 - 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                                     |
+=============================================================================+ 

16.2.13 WRITE(10) command

The WRITE(10) command (see table 315) requests that the target write the data transferred from the initiator to the medium.

Table 315 - 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                                     |
+=============================================================================+ 
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 9.2.6 for a description of the cache control bits (DPO and FUA). See 9.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 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 9.2.12) exists, and no data shall be written.

16.2.14 WRITE(12) command

The WRITE(12) command (see table 316) requests that the target write the data transferred from the initiator to the medium. See the WRITE(10) command (16.2.13) for a description of the fields in this command.

Table 316 - 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                                     |
+=============================================================================+ 

16.2.15 WRITE AND VERIFY(10) command

The WRITE AND VERIFY(10) command (see table 317) requests that the target write the data transferred from the initiator to the medium and then verify that the data is correctly written.

Table 317 - 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                                     |
+=============================================================================+ 
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 9.2.6 for a description of the cache control bits (DPO). See 9.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.

16.2.16 WRITE AND VERIFY(12) command

The WRITE AND VERIFY(12) command (see table 318) 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 (16.2.15) for a description of the bits in this command.

Table 318 - 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                                     |
+=============================================================================+ 

16.3 Parameters for optical memory devices

16.3.1 Diagnostic parameters

This subclause 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 319.

Table 319 - Diagnostic page codes

+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     00h     |  List of supported parameters page               |  8.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|     40h     |  Translate address page                          |  9.3.1     |
|  41h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+ 

16.3.2 Log parameters

This subclause 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 320.

Table 320 - Log page codes

+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     03h     |  Error counter page (read) page                  |  8.3.2.2   |
|     05h     |  Error counter page (verify) page                |  8.3.2.2   |
|     02h     |  Error counter page (write) page                 |  8.3.2.2   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     00h     |  List of supported parameters page               |  8.3.2.5   |
|     06h     |  Non-media error page                            |  8.3.2.4   |
|     04h     |  Reserved                                        |            |
|  08h - 2Fh  |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific                                 |            |
|     3Fh     |  Reserved                                        |            |
+=============================================================================+ 

16.3.3 Mode parameters

This subclause 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 8.3.3.

The medium-type code field is contained in the mode parameter header (see 8.3.3). Table 321 defines the medium-type code values used for optical memory devices.

Table 321 - Optical memory medium-type codes

+=============-===============================================================+
|    Code     |  Description                                                  |
|-------------+---------------------------------------------------------------|
|     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-specific                                              |
+=============================================================================+ 
The device specific parameter field is contained in the mode parameter header (see 8.3.3). Table 322 defines the device specific parameter values used for optical memory devices.

Table 322 - Optical memory device specific parameter

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+========+=================+========+==========================+========|
|     |   WP   |    Reserved     | DPOFUA |           Reserved       |  EBC   |
+=============================================================================+ 
When used with the MODE SELECT command the WP bit is not defined.

When used with 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.

When used with the MODE SELECT command the DPOFUA bit is reserved.

When used with the MODE SENSE command, a DPOFUA bit of one indicates that the target supports the DPO and FUA bits (see 9.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 8.3.3). Table 323 defines the density code values used for optical memory devices.

Table 323 - Optical memory density codes

+========-======================================================================+
|Density |                      Optical media                                   |
| code   |                                                                      |
|--------+----------------------------------------------------------------------|
|  00h   |Default density (currently mounted density)                           |
|        |----------------------------------------------------------------------|
|        | Diameter | Type|  Sector   | Tracks | Sides | Servo| Reference |Notes|
|        | mm (in)  |     |   size    |        |       |      | standard  |     |
|        |----------+-----+-----------+--------+-------+------+-----------+-----|
|  01h   | 86 (3,5) | R/W | 512/1 024 | 12 500 |   1   |      |  660-D    | 1   |
|  02h   | 89 (3,5) | R/W | 512/1 024 | 12 500 |   2   |      |  581-D    | 1   |
|  03h   |130 (5,25)| R/W | 512/1 024 | 18 750 |   2   |  CS  |  607-I    | 1   |
|  04h   |130 (5,25)| W-O | 512/1 024 | 30 000 |   2   |  SS  |  655-D    | 1,2 |
|  05h   |130 (5,25)| W-O | 512/1 024 | 20 000 |   2   |  SS  |  659-D    | 1,3 |
|  06h   |130 (5,25)| W-O | 512/1 024 | 18 750 |   2   |  CS  |  457-D    | 1   |
|  07h   |200 (8,0) |     |           |        |       |      |  407-D    | 1,4 |
|  08h   |300 (12,0)|     |   1 024   |        |   2   |      |  408-D    | 1,4 |
|  09h   |356 (14,0)|     |   1 024   | 56 350 |   2   |      |  456-D    | 1   |
|        |          |     |           |        |       |      |           |     |
|-------------------------------------------------------------------------------|
| Codes 80h - FFh are vendor-specific, all other codes are reserved             |
|-------------------------------------------------------------------------------|
|Key:    Type    Description                 Servo  Description                 |
|        ----    -----------                 -----  ----------------            |
|        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 324.

Table 324 - Mode page codes

+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     08h     |  Caching page                                    |  9.3.3.1   |
|     0Ah     |  Control mode page                               |  8.5.3.1   |
|     02h     |  Disconnect-reconnect page                       |  8.3.3.2   |
|     0Bh     |  Medium types supported page                     |  9.3.3.4   |
|     06h     |  Optical memory page                             | 16.3.3.1   |
|     09h     |  Peripheral device page                          |  8.3.3.3   |
|     01h     |  Read-write error recovery page                  |  9.3.3.6   |
|     07h     |  Verify error recovery page                      |  9.3.3.8   |
|  03h - 05h  |  Reserved                                        |            |
|  0Ch - 1Fh  |  Reserved                                        |            |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+ 

16.3.3.1 Optical memory page

The optical memory page (see table 325) defines parameters for control of optical memory devices.

Table 325 - 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 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.

16.4 Definitions specific to write-once and optical memory devices

16.4.1 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.

16.4.2 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.

16.4.3 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 International Standard.

16.4.4 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.

16.4.5 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.