SCSI Read Commands

From Wikipedia, the free encyclopedia
Jump to: navigation, search

There are six different SCSI Read commands defined.

Contents

[edit] Read (6)

The Read(6) command is only 6 bytes long and is a legacy from early SCSI days. Its use is restricted to 21-bit LBAs (1 GiB) and 8-bit Transfer Length fields. It has been present since the SASI (1979) specification. The CDB structure is:

bit→
↓byte
7 6 5 4 3 2 1 0
0 Operation code = 08h
1 LUN LBA
2 LBA
3 LBA
4 Transfer length
5 Control

[1] [2]

[edit] Read (10)

The Read(10) (also called 'read extended' in 1987) command was introduced to cope with 32-bit LBAs (2048 GiB) and uses a 16-bit Transfer Length field. It also included three performance-related enhancements. Disable Page Out (DPO) allows the initiator to warn the target that the data being read is unlikely to be requested again soon and so is not worth keeping in the target's data cache. Force Unit Access (FUA) tells the target to fetch the data from the media surface and to not use a cached copy. The RelAdr bit is used to indicate that the LBA value is relative (only used with linked commands). The '2' in the operation code indicates a "class 2" command, and the '8' is the real 'read' opcode. This command was present in a 1982 working document and as such it is likely to have been present from the first SCSI command definitions, showing remarkable foresight. The CDB structure is:

bit→
↓byte
7 6 5 4 3 2 1 0
0 Operation code = 28h
1 LUN DPO FUA Reserved RelAdr
2–5 LBA
6 Reserved
7–8 Transfer length
9 Control

[1] [2]

[edit] Read (12)

The Read(12) command is similar to the Read(10) command except that it has a larger 32-bit Transfer Length field. The CDB structure is:

bit→
↓byte
7 6 5 4 3 2 1 0
0 Operation code = A8h
1 Reserved DPO FUA Reserved RelAdr
2–5 LBA
6–9 Transfer length
10 Reserved
11 Control

[edit] Read (16)

The Read(16) command is similar to the Read(12) command except that it has a 64-bit LBA field and is thus capable of addressing 8 388 608 PiB (ATA-6 is capable of max 128 PiB). The Transfer Length field is 32 bits long. The CDB structure is:

bit→
↓byte
7 6 5 4 3 2 1 0
0 Operation code = 88h
1 RDPROTECT DPO FUA Reserved FUA_NV Reserved
2–9 LBA
10-13 Transfer length
14 Restricted for MMC-4 Reserved Group number
15 Control


[edit] Read (32)

The Read(32) command uses a 64-bit LBA fields (capable of addressing 8 388 608 PiB) and uses a 32-bit Transfer Length field. The CDB structure is:

bit→
↓byte
7 6 5 4 3 2 1 0
0 Operation code = 7Fh
1 Control
2-5 Reserved
6 Reserved Group number
7 Additional CDB length (18h)
8-9 Service Action (0009h)
10 RDPROTECT DPO FUA Reserved FUA_NV Reserved
11 Reserved
12-19 LBA
20-23 Initial Logical Block Reference Tag
24-25 Expected Logical Block Application Tag
26-27 Logical Block Application Tag Mask
28-31 Transfer length

[edit] Read Long

The Read Long command is used for Error Correcting Code (ECC) compliant data previously written by a Write Long command. The CORRCT bit defines whether or not the target is allowed to correct any errors found before returning the data to the target. The LBA field is 32 bits in length and the Transfer Length field is 16 bits. The CDB structure is:

bit→
↓byte
7 6 5 4 3 2 1 0
0 Operation code = 3Eh
1 Reserved CORRCT RelAdr
2–5 LBA
6 Reserved
7-8 Byte transfer length
9 Control

[edit] References

  1. ^ a b "Shugart/NCR Joint proposal for ANSI standard system interface, Using SASI as the working document". http://www.t10.org/ftp/t10/drafts/sasi/sasir0C.pdf. Retrieved 2010-02-09.  1982-01-29 t10.org
  2. ^ a b "Proposal for cd-rom in SCSI-2". http://www.t10.org/ftp/x3t9.2/document.87/87-106r0.txt.  1987-06-30 t10.org
Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export