SCSI CDB

In SCSI standards for transferring data between computers and peripheral devices, often computer storage, commands are sent in a Command Descriptor Block (CDB).

Each CDB can be a total of 6, 10, 12, or 16 bytes, but later versions of the SCSI standard also allow for variable-length CDBs. The CDB consists of a one byte operation code followed by some command-specific parameters. The parameters need not be a full byte long, and the parameter length varies from one command to another. The available commands, with links to articles describing the detailed structure of many of them, are listed in the article section List of SCSI commands.

Typical CDB structures, for the 6- and 16-byte SCSI Request Sense Command, opcode 3, are:

6-byte CDB:

Bit
Byte
7 6 5 4 3 2 1 0
0 Operation code = 03h
1 LUN Reserved
2 Reserved
3 Reserved
4 Allocation length
5 Control

16-byte CDB:

Bit
Byte
7 6 5 4 3 2 1 0
0 Operation code = 03h
1 LUN Service Action
2 Logical Block (MSB)
3
4
5 Logical Block (LSB)
6 Addition CBP information
7 Addition CBP information
8 Addition CBP information
9 Addition CBP information
10 Allocation length (MSB)
11
12
13 Allocation length (LSB)
14 Misc. CDB data
15 Control

An example with different allocation of bits to parameters is the 6-byte SCSI Mode Sense Command:[1]

Bit
Byte
7 6 5 4 3 2 1 0
0 Operation code = 1Ah
1 LUN Reserved DBD Reserved
2 PC Page code
3 Reserved
4 Allocation length
5 Control

The generic form of the 12-byte CDB is:

Bit
Byte
7 6 5 4 3 2 1 0
0 Operation code
1 miscellaneous CDB information SERVICE ACTION (if required)
2 Logical Block (MSB)
3
4
5
6 TRANSFER LENGTH (if required)
7 PARAMETER LIST LENGTH (if required)
8 ALLOCATION LENGTH (if required)
9
10 miscellaneous CDB information
11 CONTROL

See SPC-4 (http://www.t10.org/cgi-bin/ac.pl?t=f&f=spc4r34.pdf, free registration required) for more information.

Notes

gollark: I accidentally broke things horribly while I was trying to edit some options on my pi's rootfs, see.
gollark: Not *normally*, but it must be possible to have it load one *somehow*, right?
gollark: How do I make it load this """"initramfs"""?
gollark: Anyway, I decided I would try to increase my suffering and boot *mainline* linux on this instead of the somewhat unworking special kernel whatever!
gollark: Wondrous.

See also

  • LUN

References


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.