Dec 06, 2006 SCSI comand aborted i try tu burn some movies, i read here that i have to shrink. Then i try burn only some data a it failed also:/ Here is LOG. Can someone help. I throw it from window if not.
This chapter describes SCSI command structures for a logical library.
Implementation Requirements
The initiator sends commands to the target using command descriptor blocks (CDBs). The command descriptor blocks contain a format that includes:
- Operation code
- Command parameters
- Control byte
For some commands, a list of parameters accompanies the request during the Data Out phase. For all commands, if there is an invalid parameter in the command descriptor block, then the device terminates the command without altering the medium.
Command Descriptor Blocks
Initiators use command descriptor blocks (CDBs) to communicate commands to the targets. The library supports three types of command descriptor blocks:
- 6-byte commands
- 10-byte commands
- 12-byte commands
The structure for all command descriptor blocks is:
- The first byte contains a Group code that provides 8 groups of commands and the Command Code that provides 32 command codes for each group.
- The second byte in all command descriptor blocks starts the command parameters.
- Any additional bytes contain command parameters.
- The last byte in all command descriptor blocks contains the control byte.
6-Byte Command Descriptor Block
Figure 3-1 6-Byte Command Descriptor Block
Description of 'Figure 3-1 6-Byte Command Descriptor Block'
10-Byte Command Descriptor Block
Figure 3-2 10-Byte Command Descriptor Block
Description of 'Figure 3-2 10-Byte Command Descriptor Block'
12-Byte Command Descriptor Block
Figure 3-3 12-Byte Command Descriptor Block
Description of 'Figure 3-3 12-Byte Command Descriptor Block'
Control Byte
The control byte is the last byte of every command descriptor block.
Figure 3-4 Control Byte
Description of 'Figure 3-4 Control Byte'
Provides additional information about the device or for a command.
The normal auto contingent allegiance bit controls the rules for handling an auto contingent condition caused by a command. This bit is set to 0 to indicate that if a contingent allegiance condition occurs, the command will return a check condition.
This bit causes an interrupt in the initiator allowing a device to respond with intermediate status. This bit is not supported and should be 0.
Allows devices that support command linking to continue the I/O process. This bit is not supported and should be 0.
Initialize Element Status (07h)
The host uses the Initialize Element Status command (07h) to request an inventory of the cartridge tapes held in the library. The library accepts this command for compatibility, but does not perform any action. The command descriptor block is validated even though the command is not used. An initiator can obtain inventory information for the library by using the Read Element Status command.
Figure 3-5 Descriptor Block - Initialize Element Status (07h)
Description of 'Figure 3-5 Descriptor Block - Initialize Element Status (07h)'
Initialize Element Status with Range (37h)
The Initialize Element Status With Range command (37h) is a request from the host to perform an inventory of a portion of the cartridge tapes within the library. The library accepts this command for compatibility, but does not perform any action.
The library performs an audit of and maintains the inventory upon power up. The library also performs an audit after some one has opened and closed the front door.
The command descriptor block is validated even though the command is not used. No checks are made of ignored fields (see below).
An initiator can obtain inventory information for the library by using the Read Element Status command.
Figure 3-6 Descriptor Block - Initialize Element Status with Range (37h)
Description of 'Figure 3-6 Descriptor Block - Initialize Element Status with Range (37h)'
Ignore this field.
Ignore this field.
Ignore this field.
Ignore this field.
Inquiry Command (12h)
The Inquiry command (12h) requests that the library send to the initiator information regarding the library's parameters.
Note:
The Inquiry command returns check condition status only when the requested data cannot be returned. This command will not clear any pending unit attention conditions.Figure 3-7 Descriptor Block - Inquiry Command (12h)
Description of 'Figure 3-7 Descriptor Block - Inquiry Command (12h)'
The library returns a value of 0, indicating command support data is not supported.
The enable vital product data bit indicates the type of inquiry data the initiator is requesting. Supported values are:
- 0 = Request for normal inquiry data
- 1 = Request for vital support product data page
If the EVPD value is 0, this field must be 00h.
If the EVPD value is 1, this field must be:
- 00h = Supported vital product pages
- 80h = Unit serial number page
- 83h = Device identification page (Fibre only)
The allocation length field specifies the number of bytes the initiator has allocated for data returned from the Inquiry command.
A value of 0 indicates that no inquiry data is to be transferred. This condition is not considered an error.
The library terminates the Data In phase when it has transferred either the number of bytes specified by the Allocation Length field or all of the available inquiry data, whichever is less.
The data length for the normal inquiry data the library returns is 24h (36d) bytes. The data length for page 0 is 07h (7d). The data length for the unit serial number page (80h) is 0fh (15d) bytes. The data length for the device identification page (83h) is 18h (24d).
Normal Inquiry Data Definition
For the Inquiry command, the library returns 24h (36d) bytes of data in the format shown below.
Error Conditions: The library returns Check Condition status for the Inquiry command only when a severe error occurs. To recover from a Check Condition status report on the Inquiry command, verify that the Inquiry CDB is OK, and retry the Inquiry command.
Figure 3-8 Descriptor Block - Normal Inquiry Data Definition
Description of 'Figure 3-8 Descriptor Block - Normal Inquiry Data Definition'
The library returns a value of 000b, which indicates that the library is a single logical unit number (LUN). If a logical library is not currently mapped to the lun, this field is set to 011b.
The library returns a value of 8h, which indicates that the library is a medium changer device. If a logical library is not currently mapped to the lun, this field is set to 1fh.
Removable Medium; a value of 1 indicates the medium is removable.
A value of 0 indicates there are no modifiers for the library.
The library returns a value of 5h, which indicates compliance to SCSI-3.
The Normal Auto Contingent Allegiance (NACA) bit controls the rules for handling an auto contingent condition caused by a command.
The library returns a value of 0, indicating it does not support setting the NACA bit to one.
The library returns a value of 1, indicating it uses the hierarchical addressing model to assign LUNs to logical units.
A value of 2 indicates the data found is in accordance with the SCSI-3 specification.
A value of 1fh indicates there are 24h (36) bytes of Inquiry data available to the initiator.
The library returns a value of 0, indicating the library does not contain an embedded storage array controller component.
The library returns a value of 0, indicating it does not contain an access control coordinator that may be addressed through this logical unit.
The library returns a value of 0 for the asymmetrical logical unit access field, indicating asymmetric logical unit access is not supported.
The library returns a value of 0, indicating third-party commands are not supported.
The library returns a value of 0, indicating basic queuing is not supported.
Vendor Specific bit is set to 0, indicating there is no vendor-specific information with this command.
The library returns a value of 0, indicating multi-port attachments are not supported.
The library is not embedded in or attached to a medium transport element and returns a value of 0.
The library returns a value of 0 for the relative addressing bit, indicating relative addressing is not supported.
The library returns a value of 0 for the LINKED command bit, indicating linked commands are not supported.
The library returns a value of 0, indicating Command Queing is not supported.
The library returns a value of 0, indicating Soft Reset is not supported.
Contains the ASCII character sequence ”SUN” followed by blanks. If the specified logical unit is not supported, this field contains all blanks.
This field contains the ASCII character sequence ”ACSLS-SCSI” followed by blanks.
For ACSLS, the initial product revision level is 1000.
Supported Pages Definition
The library returns 7d bytes of supported page data in the format shown below.
Figure 3-9 Descriptor Block - Supported Pages Definition
Description of 'Figure 3-9 Descriptor Block - Supported Pages Definition'
The library returns a value of 000b, which indicates that the library is a single logical unit number (LUN). If a logical library is not currently mapped to the LUN, this field is set to 011b.
The library returns a value of 8h, which indicates that the library is a medium changer device. If a logical library is not currently mapped to the LUN, this field is set to 1fh.
Identifies the page as the supported pages (00h).
Indicates that three vital pages are supported (03h).
The first supported page value is set to:
- 00h = Indicates the first vital page is page 0 (current page)
- 80h = Indicates the second vital page ('Unit Serial Number Page Definition')
- 83h = Indicates the third vital page ('Device Identification Page (Fibre Only)')
Unit Serial Number Page Definition
Figure 3-10 Descriptor Block - Unit Serial Number Page Definition
Description of 'Figure 3-10 Descriptor Block - Unit Serial Number Page Definition'
The library returns a value of 000b, which indicates that the library is a single logical unit number (LUN). If a logical library is not currently mapped to the lun, this field is set to 011b.
The library returns a value of 8h, which indicates that the library is a medium changer device. If a logical library is not currently mapped to the lun, this field is set to 1fh.
This field is set to 80h, identifying the page as the unit serial number page.
This field is set to 0Ch, the number of bytes in the product serial number.
Serial numbers for logical libraries consist of 12 ASCII numeric (0-9) characters that uniquely identify the library. The format is SSSSSSSSNNN where:
![Nero Scsi Command Aborted Nero Scsi Command Aborted](http://wwwlehre.dhbw-stuttgart.de/~schulte/htme/images/scsi-4.gif)
- SSSSSSSS is the unique software serial number of the system.
- NNNN is the ID of the logical library partition within the system (0-9999).
Device Identification Page (Fibre Only)
The library returns 24 bytes of device identification page data (page 83h) in the format shown below.
Figure 3-11 Descriptor Block - Device Identification Page (Fibre Only)
Description of 'Figure 3-11 Descriptor Block - Device Identification Page (Fibre Only)'
VPD page 83h returns a NAA type 6 IEEE Registered Extended identifier to uniquely identify the logical library.
1h = Identifier field contains binary values
0h = Identifier field is associated with the addressed logical unit
3h = Identifier field contains an NAA type identifier that is compatible with a Name_Identifier defined in FC-FS
10h = NAA type 6h identifier, IEEE Registered Extended, has a fixed length of 16 bytes
![Nero Scsi Command Aborted Nero Scsi Command Aborted](https://0.academia-photos.com/attachment_thumbnails/55169567/mini_magick20190115-23078-1ha5wls.png?1547548615)
This field contains the 24 bit canonical form Object Unique Identifier (OUI) for StorageTek assigned by the IEEE, i.e. 00104Fh.
The VSID encoding is 0000004A6h, which is the hexadecimal representation of the company unique product code within StorageTek for StorageTek ACSLS 8.x, i.e. 1190d.
This field contains a hexadecimal encoding of the serial number. Each character of the serial number is represented in a 4 bit nibble. For example, a library with serial number ”000012400002” the VSID Extension encoding would be 0000000012400002h.
Log Sense Command (4Dh) — Not Supported
This command is not supported.
Mode Select 6-byte (15h) and Mode Select 10-byte (55h) — Not Supported
These commands are not supported.
Mode Sense 6 (1Ah)
The Mode Sense 6 command (1A) enables the library to report its operating mode parameters to the initiator. The initiator can request one page or all pages of the mode parameters.
The Mode Sense (6) command only supports the Element Address Assignment (1Dh) and Device Capabilities (1Fh) pages. A library can be dynamically changed by the administrator using the GUI. Such changes include:
- increasing or decreasing the number of storage elements
- increasing or decreasing the number of import / export elements
- adding or removing drives
Whenever the administrator makes any of these changes, the system presents a Unit Attention to the client application with the following sense information:
- Sense Key 6h (Unit Attention) ASC / ASCQ 2Ah / 01h (Mode Parameters Changed)
Upon receipt of this Unit Attention, the client application should re-configure the library by using information returned by the Mode Sense command.
Figure 3-12 Descriptor Block - Mode Sense 6 (1Ah)
Description of 'Figure 3-12 Descriptor Block - Mode Sense 6 (1Ah)'
Set to 1 to indicate that block descriptor should not be returned.
Defines the type of parameters to be returned for the Mode Sense command, values include:
- 0h (00b) = Current Values: The library returns the current parameter values. Since Mode Select is not supported, the current values will always be equal to the default values.
- 1h (01b) = Changeable Values: Not supported. The command terminates with Check Condition status and sense key of Illegal Request (5h) and ASC set to Invalid Field in CDB (24h).
- 2h (10b) = Default Values: The library returns the default values. Since Mode Select is not supported, the default values will always be equal to the current values.
- 3h (11b) = Saved Values: The library returns the saved values. Not supported. The command terminates with Check Condition status and sense key of Illegal Request (5h) and ASC set to Invalid Saving Parameters Not Supported (39h).
Specifies which pages the library returns, including:
- 1Dh = Element Address Assignment page
- 1Fh = Device Capabilities page
- 3Fh = All pages (in the above order)
Not supported.
Specifies the length of the parameter list the library returns. The maximum length is 2Ch (44d) bytes.The length varies based on the Page Code selected:
- 4 bytes for the parameter list header (always present)
- 20 additional bytes for the Element Address Assignment page
- 20 additional bytes for the Device Capabilities page
The library transfers the number of bytes specified by the Allocation Length or the available Mode Sense data, whichever is less.
Mode Sense Parameter Header
Figure 3-13 Descriptor Block - Mode Sense Parameter Header
Description of 'Figure 3-13 Descriptor Block - Mode Sense Parameter Header'
The bytes of parameter information available regardless of the allocation length. This value excludes the Mode Data Length byte, but includes three additional bytes (for Mode Sense 6-byte) or six additional bytes (for Mode Sense 10-byte) and the length of any mode pages that follow.
00h = the library does not support block descriptors.
Element Address Assignment Page
Figure 3-14 Descriptor Block - Element Address Assignment Page
Description of 'Figure 3-14 Descriptor Block - Element Address Assignment Page'
Specifies that the library cannot save this page to non-volatile memory and returns a value of 0.
Identifies the Element Address Assignment mode page and returns a value of 1Dh.
Indicates the amount of element address data following this byte and returns a value of 12h.
Identifies the address of the robot and returns a value of 0h.
Identifies the number of hands within the library and returns a value of 0001h.
Identifies the starting address of the cartridge tape storage cells. The default starting address is 3E8h (100d).
The number of data cartridge cells in the library or partition. The total number of cartridge tape storage cells depends on how the library is configured.
Identifies the address of the first Import/Export element. The default starting address is 000Ah (10d).
Identifies the total number of import/export cells.
Identifies the address of the first tape transport installed in the library. The default address is 1F4h (500d).
Identifies the number of tape drives in the library, and the library returns the configured count.
Device Capabilities Page
- DT — Data Transfer Element (drive)
- I/E — Import/Export Element (CAP cells)
- ST — Storage Element (cartridge storage cell)
- MT — Medium transport (robot hand)
Figure 3-15 Descriptor Block - Device Capabilities Page
Description of 'Figure 3-15 Descriptor Block - Device Capabilities Page'
The library returns 0.
1Fh = The Device Capabilities mode page.
12h = 18 bytes of device capabilities data to follow.
1 = A tape drive can function as element storage.
1 = A CAP cell can function as element storage.
1 = A cartridge cell can function as element storage.
0 = The robot hand cannot function as element storage. You cannot use the robot as the source or destination of a move.
0 = The robot hand (MT) cannot be the source or destination of a move.
1 = Tape drives (DT), CAP cells (I/E), and cartridge cells (ST) are valid sources or destinations for a move.
0 = The library does not support the exchange medium command.
Mode Sense 10-byte (5Ah) — Not Supported
This command is not supported.
Move Medium (A5h)
The Move Medium command (A5h) moves a cartridge tape from one specific element location to another specific element location. The Mode Sense command provides a matrix with the valid source and destination element combinations for the Move Medium command.
Medium movement occurs only for moves which involve a tape drive. All other move types are logical and do not cause real robotic activity.
Note:
Moves to import/export elements cause the medium to be immediately (logically) removed from the library. This means that import / export cells cannot be used as a place to store a volume. A Read Element Status command for an import/export element will always return a response of 'empty'. Also the command will fail with SenseKey Illegal Request (5h) and ACS/ASCQ Invalid Element (21/01h) if the source element address is an import/export element.The ACSLS Fast Load setting controls how completion of the move command is reported when the destination element is a tape drive.
With Fast Load enabled, a success status is returned once the operation has been validated and accepted by ACSLS, but before cartridge movement begins. If some error should occur during movement, ACSLS does not report that information. The client is responsible for identifying when the volume has been loaded and is usable, and for timing out the request in the case of any error.
With Fast Load disabled (the default setting), success status is not returned until the physical library has reported that the movement is complete. However, if an error should occur during movement, ACSLS reports that information to the client.
Please note that physical libraries may provide their own Fast Load option, which can affect the time required before ACSLS would return a success status (but only when ACSLS Fast Load is disabled). When ACSLS Fast Load is enabled, the library setting would have no effect on client notification.
Figure 3-16 Descriptor Block - Move Medium (A5h)
Description of 'Figure 3-16 Descriptor Block - Move Medium (A5h)'
This field defines the robot element to use and should contain the element address 00h. A value of 00h indicates use of the default hand. If any other value is entered it will be ignored.
This field is the element address from which the cartridge tape is to be removed. This may be a storage cell or a tape drive.
This field is the element address where the cartridge tape is to be placed. This may be a storage cell, a CAP cell, or a tape drive.
The library does not support this function and requires a value of 0.
These two bits define optional operations associated with the Move Medium command.
- 00 = The library performs a normal move medium operation
- 10 = The library performs a mount operation with write protect enabled. That is, the user can read the data on the cartridge but cannot write to the cartridge.This option is valid only when the destination element address is a data transfer element. If the destination data transfer element (tape drive) does not support this feature or fails to acknowledge the write-protected mount option, the mount fails. In either case, the library returns the Hardware Error sense key (04) with an ASC of 40 and an ASCQ of 02 (Drive Error).
- 11 = The data transfer element specified in the source element field performs a rewind, followed by a unload operation and then the move medium operation.This option is valid only when the source element address is a data transfer element. Use this option with care because it might interfere with operations being performed on the data path of the data transfer element.
Persistent Reserve In (5Eh) — Not Supported
This command is not supported.
Persistent Reserve Out (5Fh) — Not Supported
This command is not supported.
Position to Element (2Bh)
The Position to Element command (2Bh) moves the virtual hand to the specified element. For the library, the command is supported but does not perform any action.
Figure 3-17 Descriptor Block - Position to Element (2Bh)
Description of 'Figure 3-17 Descriptor Block - Position to Element (2Bh)'
This field defines the hand element to use and should contain the element address of the hand or 00h (0d). A value of 00h (0d) indicates use of the default hand.
This field defines the address of the element where the hand is to be positioned.
The library does not support this function and requires a value of 0.
Prevent/Allow Medium Removal (1Eh)
The Prevent/Allow Medium Removal command (1Eh) requests that the library enable or disable operator panel access to the cartridge access port (CAP). Since a logical library does not contain a physical CAP, this command is supported for compatibility but does not perform any action.
Figure 3-18 Descriptor Block - Prevent/Allow Medium Removal (1Eh)
Description of 'Figure 3-18 Descriptor Block - Prevent/Allow Medium Removal (1Eh)'
0 = The library allows operator panel access to unlock and open the indicated CAP.
1 = The library prevents access to the indicated CAP.
Read Element Status (B8h)
The Read Element Status command (B8h) requests that the library return the status of the elements in the library.
Figure 3-19 Descriptor Block - Read Element Status (B8h)
Description of 'Figure 3-19 Descriptor Block - Read Element Status (B8h)'
0 = Volume Tag information is not reported
1 = Volume Tag information is reported
Volume Tag information can be returned in more than one format. All formats are left justified and padded with ASCII blanks through byte 32, bytes 33-36 are zero. The library does not support sequence numbers. The format to be used is configured using the GUI. Configurable formats include:
- 6-character — format
vvvvvv
, where:vvvvvv
is the ascii volser - 8-character Suffixed — format
vvvvvvdt
orvvvvvvbt
, where:vvvvvv
is the ascii volserd
is the media domainb
is the an ascii blankt
is the media type - 8-character Prefixed — format
dtvvvvv
v orbtvvvvvv
, where:d
is the media domainb
is the an ascii blankt
is the media typevvvvvv
is the ascii volser - Open Format — the complete bar code as reported by the backing physical library.
0h = All Element Types reported. The element types are reported in ascending element address order, beginning with the first element greater than or equal to the Starting Element Address.
1h = Medium Transport Element (hand)
2h = Storage Element (cartridge tape storage cells)
3h = Import/Export Element (CAP cells and PTP cells)
4h = Data Transfer Element (tape drive)
This field specifies the minimum element address to report. Only elements with an element address greater than or equal to the Starting Element Address are reported.
Element descriptor blocks are not generated for undefined element addresses.
The Starting Element Address must be a valid address for the library but does not have to be an address of the type requested in the Element Type Code.
This field represents the maximum number of element descriptors to be transferred. This is an actual number of element descriptors to be transferred, not an element address range.
0 = Library operations are normal, and library mechanics may become active if needed to gather element static data.
1 = The library is responding with data only; no mechanical operations are active. The CurData bit is effectively ignored by the library. The library will perform or not perform mechanical operations to obtain proper information at its discretion independently of the setting of this bit.
0 = The library will not return device identification information.
1 = The library will return device identification information only for data transfer elements.
This field specifies the length in bytes of the space allocated by the initiator for the transfer of element descriptors. Only complete element descriptors are transferred. Element descriptors are transferred until one of the following conditions is met:
- All available element descriptors of the type specified in the Element Type Code have been transferred.
- The number of element descriptors specified in the Number of Elements field have been transferred.
- There is less allocation length space available than required for the next complete element descriptor or header to be transferred.
The library returns data for a Read Element Status command with an eight-byte Element Status Data header, followed by one to four element pages, one page per element type.
A page consists of an eight-byte Element Status Page header, followed by one or more Element Descriptors. The format of the descriptor is based on the element type reported in this page. Each element type receives a separate Element Descriptor format.
Data can be truncated based on the length specified in the allocation field.
Element Status Data Header Definition
The library sends this header once for each Read Element Status command.
Figure 3-20 Descriptor Block - Element Status Data Header Definition
Description of 'Figure 3-20 Descriptor Block - Element Status Data Header Definition'
This field indicates the lowest element address found of the type specified in the Element Type Codes and greater than or equal to the Starting Element Address.
This field indicates the number of elements found of the type specified in the Element Type Codes and greater than or equal to the Starting Element Address. This number is adjusted to be less than or equal to the count specified in the Number of Elements field in the Read Element Status command.
This field indicates the number of bytes of element status data available for all elements meeting the requirements of the Read Element Status command. This count does not include the Element Status Data header bytes. This value is not adjusted to match the allocation length from the command.
Element Status Page Header
The library sends this header once for each type of element descriptors.
Figure 3-21 Descriptor Block - Element Status Page Header
Description of 'Figure 3-21 Descriptor Block - Element Status Page Header'
See 'Element Type Code' .
0 = Volume Tag information has not been requested. The data is omitted from the element descriptors.
1 = Volume Tag information has been requested to be reported and is present.
The library does not support alternative volume tags (AVolTag) and returns a value of 0.
This field indicates the total number of bytes contained in a single element descriptor.
This field indicates the total number of bytes of element descriptor data available for the elements of this element type that meet the requirements of the Read Element Status command. This count does not include the Element Status Page header bytes. This value is not adjusted to match the allocation length.
See below.
Element Descriptors
The following sections contain the field definitions for the four types of library elements, which are:
- Medium Transport Element (the hand)
- Storage Element (cartridge tape storage cells)
- Import/Export Element (CAP cells and PTP cells)
- Data Transfer Element (tape drives)
Each element descriptor includes the element address and status flags. Each element descriptor might also contain sense key information as well as other information, depending on the element type.
The element descriptors for the four types of elements are similar, with the exception of a few fields. Note the differences in Bytes 02, 06, and 07 for the four element descriptors.
The library does not support alternate volume tags. This information is not included in any of the element descriptors.
Medium Transport Element Descriptor
Medium transport elements are robotic components capable of physically moving cartridges. The Medium Transport Element Descriptor defines the robot characteristics.
Figure 3-22 Medium Transport Element Descriptor
Description of 'Figure 3-22 Medium Transport Element Descriptor'
Storage Element Descriptor
Storage elements are the main cartridge tape storage cells of the library.The Storage Element Descriptor describes a storage cell.
Figure 3-23 Storage Element Descriptor
Description of 'Figure 3-23 Storage Element Descriptor'
Import/Export Element Descriptor
Import/Export elements are the CAP and/or Pass-thru cells of the library. The Import/Export Element Descriptor describes a CAP cell.
Figure 3-24 Import/Export Element Descriptor
Description of 'Figure 3-24 Import/Export Element Descriptor'
Data Transfer Element Descriptor
Data transfer elements are the tape drives in the library. The Data Transfer Element Descriptor Definitions page describes a tape drive.
Figure 3-25 Data Transfer Element Descriptor (DvcID = 0)
Description of 'Figure 3-25 Data Transfer Element Descriptor (DvcID = 0)'
Figure 3-26 Data Transfer Element Descriptor (DvcID = 1)
Description of 'Figure 3-26 Data Transfer Element Descriptor (DvcID = 1)'
Element Descriptor Definitions
The address of the element (robot hand, cartridge cell, CAP cell, drive, or empty drive slot).
0 = No operator intervention required to make the CAP accessible
1 = Operator intervention required to make the CAP accessible
0 = The import/export element is a CAP. The cartridge will not leave the library when prevented by the Prevent/Allow Medium Removal (1Eh) command.
1 = The CAP supports importing cartridges.
1 = The CAP supports exporting cartridges.
0 = The robot cannot access the element. For Import/Export elements, this can occur when the CAP is open or a CAP magazine was removed. For Data transfer elements, this can occur when a cartridge is loaded in a drive.
1 = The robot can access the element
0 = The element is in a normal state
1 = The element is in an abnormal state. The Additional Sense Code (ASC) and the Additional Sense Code Qualifier (ASCQ) fields contain information regarding the abnormal state. Other fields in the descriptor might be invalid and should be ignored.
0 = The robot placed the cartridge in the CAP for an export operation.
1 = An operator placed the cartridge in the CAP for an import operation.
0 = The element does not contain a cartridge
1 = The element contains a cartridge
This field is valid only if the Except bit is set. In the case of an exception, it contains an ASC as defined for Request Sense data.
This field is valid only if the Except bit is set. In the case of an exception, it contains an ASCQ as defined for Request Sense data.
Condition | ASC Value | ASCQ Value |
---|---|---|
CAP Open | 3Ah | 02h |
Empty Drive Slot (no drive installed) | 3Bh | 1Ah |
Drive Hardware Error | 40h | 02h |
0 = The Source Element Address and Invert fields are not valid.
1 = The Source Element Address and Invert fields are valid.
0 = The library does not support multi-sided media.
0 = The element is enabled.
1 = The element is disabled (for example an open CAP, a drive hardware error, or empty drive slot).
The type of medium currently present in the element as determined by the medium changer.
0h = Unspecified - the medium changer cannot determine the medium type.
1h = Data Medium
2h = Cleaning Medium
This field is valid only if the SValid field is 1. This field provides the address of the last storage element this cartridge occupied. The element address value may or may not be the same as this element.
When PVolTag is 1, the library returns volume tag information. When PVolTag is 0, the library omits volume tag information.
The Primary Volume Tag field contains the null-terminated ASCII barcode label on the tape cartridge. If the label on the cartridge tape is not readable or if the element is empty, the Primary Volume Tag field is filled with 36 bytes of zeros. The 'Volume Label Format' controls the presentation of the volser in the Primary Volume Tag field. The library supports the following settings:
- Full Label
- No Type Checking
- Prepend Last Two Characters
- Trim Last Character
- Trim Last Two Characters
- Trim First Two Characters
- Trim First Character
For more information, see the SL4000 GUI help.
0h = Reserved (not supported) for the Medium Transport Element, Storage Element, Import/Export Element, or Data Transfer Element (DvcID = 0) descriptors.
2h = The identifier contains ASCII graphic codes (code values 20h through 7Eh) for Data Transfer Element (DvcID = 1) descriptor.
The format and assignment authority for the identifier.
0h = The library returns vendor specific data.
The combined length of the Identifier and the Identifier Pad.
00h = The library returns 0 bytes of identifier data in the descriptors for Medium Transport Elements, Storage Elements, Import/Export Elements, or Data Transfer Elements (DvcID = 0).
20h = The library returns 32 bytes of identifier data for the Data Transfer Element (DvcID = 1).
The ASCII Serial Number for the tape drive associated with this data transfer element.
Contains ASCII blanks. The number of blanks depends on the length of the Identifier field. The combined length of the Identifier field and the Identifier Pad is 32 bytes.
43h ('C') = The element contains a cleaning cartridge.
4Ch ('L') = The element contains an LTO cartridge.
54h ('T') = The element contains a T10000 cartridge.
FFh = The media domain cannot be determined or the element is empty.
FFh = The media type cannot be determined or the element is empty.
If the Media Domain is 43h (C):
- C = The element contains a T10000 Version 2 cleaning cartridge
- L = The element contains a T10000 Universal cleaning cartridge.
- T = The element contains a T10000 Version 1 cleaning cartridge.
- U = The element contains a Universal LTO cleaning cartridge.
If the Media Domain is 4Ch (L):
- 3 = The element contains a 400 GB Generation 3 LTO cartridge.
- 4 = The element contains an 800 GB Generation 4 LTO cartridge.
- 5 = The element contains a 1.5 TB Generation 5 LTO cartridge.
- 6 = The element contains a 2.5 TB Generation 6 LTO cartridge.
- 7 = The element contains a 6 TB Generation 7 LTO cartridge.
- 8 = The element contains a 12 TB Generation 8 LTO cartridge.
- T = The element contains a 400 GB Generation 3 LTO WORM cartridge.
- U = The element contains an 800 GB Generation 4 LTO WORM cartridge.
- V = The element contains a 1.5 TB Generation 5 LTO WORM cartridge.
- W = The element contains a 2.5 TB Generation 6 LTO WORM cartridge.
- X = The element contains a 6 TB Generation 7 LTO WORM cartridge.
- Y = The element contains a 12 TB Generation 8 LTO WORM cartridge.
If the Media Domain is 54h (T):
- 1 = The element contains a T10000 Version 1 cartridge.
- 2 = The element contains a T10000 Version 2 cartridge.
- S = The element contains a T10000 Version 1 Sport cartridge.
- T = The element contains a T10000 Version 2 Sport cartridge.
4Ch (L) = The drive supports LTO cartridges.
54h (T) = The drive supports T10000 cartridges.
FFh = The element domain cannot be determined.
FFh = The type cannot be determined.
If the Transport Domain is 4Ch (L):
- 3Bh = HP Generation 5 LTO drive
- 3Ch = IBM Generation 5 LTO drive
- 3Dh = HP Generation 6 LTO drive.
- 3Eh = IBM Generation 6 LTO drive.
- 2Dh = IBM Generation 7 LTO drive.
- 2Eh = IBM Generation 8 LTO drive.
If the Transport Domain is 54h (T):
- 0Dh = StorageTek T10000A drive.
- 0Eh = StorageTek T10000A drive in 3590 emulation mode.
- 18h = StorageTek T10000A Encrypting drive.
- 19h = StorageTek T10000A Encrypting drive in 3590 emulation mode.
- 1Ah = StorageTek T10000B drive.
- 1Bh = StorageTek T10000B drive in 3590 emulation mode.
- 1Ch = StorageTek T10000B Encrypting drive.
- 1Dh = StorageTek T10000B Encrypting drive in 3590 emulation mode.
- 22h = StorageTek T10000C drive.
- 23h = StorageTek T10000C drive in 3590 emulation mode.
- 24h = StorageTek T10000C Encrypting drive.
- 25h = StorageTek T10000C Encrypting drive in 3590 emulation mode.
- 26h = StorageTek T10000D drive.
- 27h = StorageTek T10000D drive in 3590 emulation mode.
- 28h = StorageTek T10000D Encrypting drive.
- 29h = StorageTek T10000D Encrypting drive in 3590 emulation mode.
- 2Ah = StorageTek T10000D Fibre Channel over Ethernet.
- 2Bh = StorageTek T10000D Fibre Channel over Ethernet Encrypting drive.
The 32-byte ASCII serial number for the drive.
For drives with a serial number less than 32 bytes, the library left-justifies the value by returning ASCII blanks for the unused less-significant bytes. If the serial number is not available from a drive that should support an ASCII serial number, the library returns all ASCII blanks.
Release 6-byte (17h) and Release 10-byte (57h) — Not Supported
These commands are not supported.
Report LUNs (A0h)
The Report LUNs command (A0) returns to the initiator the known LUNs to which the initiator can send commands. Each LUN returned represents a logical library. Only LUN 0 is supported in the library.
Figure 3-27 Descriptor Block - Report LUNs (A0h)
Description of 'Figure 3-27 Descriptor Block - Report LUNs (A0h)'
This field specifies the number of bytes that the initiator has allocated for data to be returned from the Report LUNs command.
The Allocation must be at least 16 bytes. If it is less, a check condition is returned with the sense key set to illegal request and the additional sense data set to invalid field in the command descriptor block (CDB).
This field specifies the type of logical unit addresses that shall be reported.
00h = The LUN addresses reported shall be limited to the following addressing methods: LUN addressing method, Peripheral device addressing method, and flat space addressing method.
02h = All LUNS accessible to the initiator for this port are accessible
Report LUNs Data Definition
The target device returns the following data for the Report LUNs command.
Figure 3-28 Descriptor Block - Report LUNs Data Definition
Description of 'Figure 3-28 Descriptor Block - Report LUNs Data Definition'
The target device returns a LUN list length of n-7. Each LUN returned represents a logical library. If no logical libraries have been mapped for the requesting initiator, LUN 0 is still returned.
Request Sense (03h)
The Request Sense command (03) requests the library transfer sense data to the initiator.
Logical libraries use an FC-2 conforming transport that provides autosense. This means that sense data for a failed command is always returned with a Check Condition status in the command response and is never saved by the target. Therefore, Request Sense will always return Sense Data with a Sense Key set to No Sense and ASC/ASCQ fields set to 0.
However, all Sense Keys and associated ASC/ASCQ fields that can be returned by other commands are documented here.
Figure 3-29 Descriptor Block - Request Sense (03h)
Description of 'Figure 3-29 Descriptor Block - Request Sense (03h)'
The Desc bit indicates which sense data format shall be returned.
The library returns a value of 0, indicating fixed format sense data is returned.
This field specifies the number of bytes that the initiator has allocated for returned sense data. The library provides a maximum of 14h (20d) bytes of sense data.
Request Sense Data Definitions
Figure 3-30 Descriptor Block - Request Sense Data Definitions
Description of 'Figure 3-30 Descriptor Block - Request Sense Data Definitions'
0 = The library does not return data in the Information field.
70h = The library returns only current errors.
00h = The library does not support segment numbers.
Describes the error, along with ASC and ASCQ. See Additional Sense Codes and Qualifiers.
0h = No Sense, indicating a successful command.
2h = Not Ready
3h = Medium Error
4h = Hardware Error
5h = Illegal Request
6h = Unit Attention
Bh = Aborted Command
00h = The library does not support this field.
0Ch = Indicates there are 12d bytes of additional sense bytes to follow. This value is not truncated to reflect the actual transfer length.
00h = The library does not support this field.
Describes the error. See Additional Sense Codes and Qualifiers.
Describes the error. See Additional Sense Codes and Qualifiers.
00h = The library does not support this field.
1 = The C/D and field pointer are valid
0 = Ignore the C/D and field pointer
0 = The check condition status resulted from illegal parameter in the parameter list.
1 = The check condition status resulted from illegal parameter in the CDB.
0 = The library does not support this field.
0h = The library does not support this field.
The number of the byte where the error occurred. When a multiple-byte field is in error, the Field Pointer contains the value of the most significant byte of the field, which is lowest byte number. Byte numbers start at 00.
Additional Sense Codes and Qualifiers
Not Ready Sense Key Code (2h)
The library generates a Not Ready error code if you send a command when the library is in a not ready state.
Description | Sense Key | ASC | ASCQ |
---|---|---|---|
Not Ready, Maintenance Mode | 2h | 04h | 81h |
The library was placed in maintenance mode from the operator panel or user interface. The logical library is offline.
Hardware Error Sense Key Code (4h)
The library generates a Hardware Error if it detects a hardware or firmware error during command execution.
Description | Sense Key | ASC | ASCQ |
---|---|---|---|
Hardware Error, Tape Drive | 4h | 40h | 02h |
Hardware Error, Internal Target Failure | 4h | 44h | 00h |
An operation to the drive failed. The problem could be the tape drive or the interface between the library and tape drive.
The library generates a hardware error when an unexpected condition is detected by ACSLS software that controls the SCSI interface. This error is used for arbitrary limitations of the software.
Illegal Request Sense Key Code (5h)
Any illegal parameters in the CDB or parameter list for a particular command generates an Illegal Request sense key.
In some cases, additional information is available in Byte 15 of the sense data, which includes the sense-key-specific-value (SKSV) and command/data (C/D) fields. This information indicates the byte in the command descriptor block or the parameter list that is in error. If available, the SKSV bit in the sense data is set to 1.
Description | Sense Key | ASC | ASCQ | SKSV |
---|---|---|---|---|
Invalid Command Operation Code | 5h | 20h | 00h | Yes |
Invalid Element Address | 5h | 21h | 01h | No |
Invalid Field in CDB | 5h | 24h | 00h | Yes |
Logical Unit Not Supported | 5h | 25h | 00h | No |
Incompatible Medium | 5h | 30h | 00h | No |
Saving Parameters Not Supported | 5h | 39h | 00h | Yes |
Medium Not Present, Drive Not Unloaded | 5h | 3Ah | 00h | No |
Destination Element Full | 5h | 3Bh | 0Dh | No |
Source Element Empty | 5h | 3Bh | 0Eh | No |
Unit Attention Sense Key Code (06h)
The library generates a Unit Attention sense key for all initiators if the library needs to inform the host of an asynchronous event.
Description | Sense Key | ASC | ASCQ |
---|---|---|---|
Not Ready-to-Ready Transition | 06h | 28h | 00h |
CAP Element Accessed | 06h | 28h | 01h |
Mode Parameters Changed | 06h | 2Ah | 01h |
Reservations Preempted | 06h | 2Ah | 03h |
Reservations Released | 06h | 2Ah | 04h |
Registrations Preempted | 06h | 2Ah | 05h |
LUNs Data Has Changed | 06h | 3Fh | 0Eh |
The library transitioned to a Ready state from a Not Ready state. The library sends this unit attention to all initiators.
The operator opened and closed the CAP. The library sends this unit attention to all initiators. You can issue a Read Element Status command to obtain an updated inventory (see Read Element Status (B8h).
The operator added or removed elements from a partition. Send a Read Element Status (B8h) command to obtain an updated inventory. Send a Mode Sense command with Element Address page code to request the current count of each element type.
A different initiator issued a Persistent Reservation Out command that cleared the registration for this initiator or cleared a reservation that affects this initiator.
The LUN configuration for the initiator has changed. The library sends this unit attention when the operator adds or removes a LUN connection from a partition for the initiator.
Aborted Command Sense Key Code (0Bh)
The library generates an Aborted Command error code when a SCSI command is aborted.
Description | Sense Key | ASC | ASCQ |
---|---|---|---|
Command Overlap | 0Bh | 4Eh | 00h |
The library detected another command from an initiator while one was already in process.
Request Volume Element Address (B5h) — Not Supported
This command is not supported.
Reserve 6-byte (16h) and Reserve 10-byte (56h) — Not Supported
This command is not supported.
Send Diagnostic (1Dh) — Not Supported
This command is not supported.
Send Volume Tag (B6h) — Not Supported
This command is not supported.
Test Unit Ready (00h)
The Test Unit Ready command (00h) allows the initiator to determine if the library is powered-on and ready to accept additional commands. This is not a request for a library self-test.
The Test Unit Ready command returns a Good status if the library is ready to accept additional commands. This command also returns a Check Condition if the library is not ready or if there are pending Unit Attentions.
Figure 3-31 Descriptor Block - Test Unit Ready (00h)
Description of 'Figure 3-31 Descriptor Block - Test Unit Ready (00h)'
Write Buffer (3Bh) — Not Supported
This command is not supported.
-->Note The SCSI port driver and SCSI miniport driver models may be altered or unavailable in the future. Instead, we recommend using the Storport driver and Storport miniport driver models.
Syntax
Members
Length
Specifies the size in bytes of this structure.
Function
Specifies the operation to be performed, which can be one of the following values:
SRB_FUNCTION_EXECUTE_SCSI (0x00)
A SCSI device I/O request should be executed on the target logical unit.
SRB_FUNCTION_ABORT_COMMAND (0x10)
A SCSIMESS_ABORT message should be sent to cancel the request pointed to by the NextSrb member. If this is a tagged-queue request, a SCSIMESS_ABORT_WITH_TAG message should be used instead. If the indicated request has been completed, this request should be completed normally. Only the SRB Function, PathId, TargetId, Lun, and NextSrb members are valid.
SRB_FUNCTION_RESET_DEVICE (0x13)
The ScsiPort driver no longer sends this SRB to its miniports. Only Storport miniport drivers use this SRB. The SCSI target controller should be reset using the SCSIMESS_BUS_DEVICE_RESET message. The miniport driver should complete any active requests for the target controller. Only the SRB Function, TargetId, and PathId members are valid.
SRB_FUNCTION_RESET_LOGICAL_UNIT (0x20)
The logical unit should be reset, if possible. The HBA miniport driver should complete any active requests for the logical unit. Only the Function, PathId, TargetId, and Lun members of the SRB are valid. Storport supports this type of reset, but SCSI port does not.
SRB_FUNCTION_RESET_BUS (0x12)
The SCSI bus should be reset using the SCSIMESS_BUS_DEVICE_RESET message. A miniport driver receives this request only if a given request has timed out and a subsequent request to abort the timed-out request also has timed out. Only the SRB Function and PathId members are valid.
SRB_FUNCTION_TERMINATE_IO (0x14)
A SCSIMESS_TERMINATE_IO_PROCESS message should be sent to cancel the request pointed to by the NextSrb member. If the indicated request has already completed, this request should be completed normally. Only the SRB Function, PathId, TargetId, Lun, and NextSrb members are valid.
SRB_FUNCTION_RELEASE_RECOVERY (0x11)
A SCSIMESS_RELEASE_RECOVERY message should be sent to the target controller. Only the SRB Function, PathId, TargetId, and Lun members are valid.
SRB_FUNCTION_RECEIVE_EVENT (0x03)
The HBA should be prepared to receive an asynchronous event notification from the addressed target. The SRB DataBuffer member indicates where the data should be placed.
SRB_FUNCTION_SHUTDOWN (0x07)
The system is being shut down. This request is sent to a miniport driver only if it set CachesData to TRUE in the PORT_CONFIGURATION_INFORMATION for the HBA. Such a miniport driver can receive several of these notifications before all system activity actually stops. However, the last shutdown notification will occur after the last start I/O. Only the SRB Function, PathId, TargetId and Lun members are valid.
SRB_FUNCTION_FLUSH (0x08)
The miniport driver should flush any cached data for the target device. This request is sent to the miniport driver only if it set CachesData to TRUE in the PORT_CONFIGURATION_INFORMATION for the HBA. Only the SRB Function, PathId, TargetId and Lun members are valid.
SRB_FUNCTION_IO_CONTROL (0x02)
The request is an I/O control request, originating in a user-mode application with a dedicated HBA. The SRB DataBuffer points to an SRB_IO_CONTROL header followed by the data area. The value in DataBuffer can be used by the driver, regardless of the value of MapBuffers. Only the SRB Function, SrbFlags, TimeOutValue, DataBuffer, and DataTransferLength members are valid, along with the SrbExtension member if the miniport driver requested SRB extensions when it initialized. If a miniport driver controls an application-dedicated HBA so it supports this request, the miniport driver should execute the request and notify the OS-specific port driver when the SRB has completed, using the normal mechanism of calls to ScsiPortNotification with RequestComplete and NextRequest.
SRB_FUNCTION_LOCK_QUEUE (0x18)
Holds requests queued by the port driver for a particular logical unit, typically while a power request is being processed. Only the SRB Length, Function, SrbFlags, and OriginalRequest members are valid. When the queue is locked, only requests with SrbFlags ORed with SRB_FLAGS_BYPASS_LOCKED_QUEUE will be processed. SCSI miniport drivers do not process SRB_FUNCTION_LOCK_QUEUE requests.
SRB_FUNCTION_UNLOCK_QUEUE (0x19)
Releases the port driver's queue for a logical unit that was previously locked with SRB_FUNCTION_LOCK_QUEUE. The SrbFlags of the unlock request must be ORed with SRB_FLAGS_BYPASS_LOCKED_QUEUE. Only the SRB Length, Function, SrbFlags, and OriginalRequest members are valid. SCSI miniport drivers do not process SRB_FUNCTION_UNLOCK_QUEUE requests.
SRB_FUNCTION_DUMP_POINTERS (0x26)
A request with this function is sent to a Storport miniport driver that is used to control the disk that holds the crash dump data. The request collects information needed from the miniport driver to support crash dump and hibernation. See the MINIPORT_DUMP_POINTERS structure. A physical miniport driver must set the STOR_FEATURE_DUMP_POINTERS flag in the FeatureSupport member of its HW_INITIALIZATION_DATA to receive a request with this function.
SRB_FUNCTION_FREE_DUMP_POINTERS (0x27)
A request with this function is sent to a Storport miniport driver to release any resources allocated during a previous request for SRB_FUNCTION_DUMP_POINTERS.
SrbStatus
Returns the status of the completed request. This member should be set by the miniport driver before it notifies the OS-specific driver that the request has completed by calling ScsiPortNotification with RequestComplete. The value of this member can be one of the following:
SRB_STATUS_PENDING
Indicates the request is in progress. The OS-specific port driver initializes SrbStatus to this value.
SRB_STATUS_SUCCESS
Indicates the request was completed successfully.
SRB_STATUS_ABORTED
Indicates the request was aborted as directed by the port driver. A miniport driver sets this status in the NextSrb for a successful SRB_FUNCTION_ABORT_COMMAND request.
SRB_STATUS_ABORT_FAILED
Indicates an attempt to abort the request failed. Return this status for an SRB_FUNCTION_ABORT_COMMAND request when the specified request cannot be located.
SRB_STATUS_ERROR
Indicates the request was completed with an error in the SCSI bus status.
SRB_STATUS_BUSY
Indicates the miniport driver or target device could not accept the request at this time. The OS-specific port driver will resubmit the request later.
SRB_STATUS_INTERNAL_ERROR
Indicates that the SCSI Port driver could not deliver the request to the miniport driver or target device. In such cases, status is recorded in InternalStatus.
SRB_STATUS_INVALID_REQUEST
Indicates the miniport driver does not support the given request.
SRB_STATUS_NO_DEVICE
Indicates the device did not respond.
SRB_STATUS_TIMEOUT
Indicates the request timed out.
SRB_STATUS_SELECTION_TIMEOUT
Indicates the SCSI device selection timed out.
SRB_STATUS_COMMAND_TIMEOUT
Indicates the target did not complete the command within the time limit.
SRB_STATUS_MESSAGE_REJECTED
Indicates the target rejected a message. This is normally returned only for such message-type requests as SRB_FUNCTION_TERMINATE_IO.
SRB_STATUS_BUS_RESET
Indicates a bus reset occurred while this request was being executed.
SRB_STATUS_PARITY_ERROR
Indicates a parity error occurred on the SCSI bus and that a retry failed.
SRB_STATUS_REQUEST_SENSE_FAILED
Indicates the request-sense command failed. This is returned only if the HBA performs auto request sense and the miniport driver set AutoRequestSense to TRUE in the PORT_CONFIGURATION_INFORMATION for this HBA.
SRB_STATUS_NO_HBA
Indicates the HBA does not respond.
SRB_STATUS_DATA_OVERRUN
Indicates that a data overrun or underrun error occurred. The miniport driver also must update the SRB's DataTransferLength member to indicate how much data actually was transferred if an underrun occurs.
SRB_STATUS_UNEXPECTED_BUS_FREE
Indicates the target disconnected unexpectedly.
SRB_STATUS_PHASE_SEQUENCE_FAILURE
Indicates the HBA detected an illegal phase sequence failure error.
SRB_STATUS_REQUEST_FLUSHED
Indicates the request for status was stopped.
SRB_STATUS_BAD_FUNCTION
Indicates the SRB Function code is not supported.
SRB_STATUS_INVALID_PATH_ID
Indicates the PathId specified in the SRB does not exist.
SRB_STATUS_INVALID_TARGET_ID
Indicates the TargetID value in the SRB is invalid.
SRB_STATUS_INVALID_LUN
Indicates the Lun value in the SRB is invalid.
SRB_STATUS_ERROR_RECOVERY
Indicates the request was completed with an error in the SCSI bus status and that the SCSI INITIATE RECOVERY message was received.
SRB_STATUS_AUTOSENSE_VALID
Indicates information returned in the SenseInfoBuffer is valid.
SRB_STATUS_QUEUE_FROZEN
A miniport driver should never set the SrbStatus member to this value. The Windows port driver can set this value to inform a storage class driver that its queue of requests for a particular peripheral has been frozen.
ScsiStatus
Returns the SCSI status that was returned by the HBA or target device. If the status is not SUCCESS, the miniport driver should set the SrbStatus member to SRB_STATUS_ERROR.
PathId
Indicates the SCSI port or bus for the request. This value is zero-based.
TargetId
Indicates the target controller or device on the bus.
Lun
Indicates the logical unit number of the device.
QueueTag
Contains the queue-tag value assigned by the OS-specific port driver. If this member is used for tagged queuing, the HBA supports internal queuing of requests to LUs and the miniport driver set TaggedQueueing to TRUE in the PORT_CONFIGURATION_INFORMATION for this HBA.
QueueAction
Indicates the tagged-queuing message to be used when the SRB_FLAGS_QUEUE_ACTION_ENABLE flag is set. The value can be one of the following: SRB_SIMPLE_TAG_REQUEST, SRB_HEAD_OF_QUEUE_TAG_REQUEST, or SRB_ORDERED_QUEUE_TAG_REQUEST, as defined according to the SCSI specification.
CdbLength
Indicates the size in bytes of the SCSI-2 or later command descriptor block.
SenseInfoBufferLength
Indicates the size in bytes of the request-sense buffer. If an underrun occurs, the miniport driver must update this member to the number of bytes actually transferred.
SrbFlags
Indicates various parameters and options about the request. SrbFlags is read-only, except when SRB_FLAGS_UNSPECIFIED_DIRECTION is set and miniport drivers of subordinate DMA adapters are required to update SRB_FLAGS_DATA_IN or SRB_FLAGS_DATA_OUT. This member can have one or more of the following flags set:
SRB_FLAGS_QUEUE_ACTION_ENABLE
Indicates tagged-queue actions are to be enabled.
SRB_FLAGS_DISABLE_AUTOSENSE
Indicates that request-sense information should not be returned.
SRB_FLAGS_DATA_IN
Indicates data will be transferred from the device to the system.
SRB_FLAGS_DATA_OUT
Indicates data will be transferred from the system to the device.
SRB_FLAGS_UNSPECIFIED_DIRECTION
Defined for backward compatibility with the ASPI/CAM SCSI interfaces, this flag indicates that the transfer direction could be either of the preceding because both of the preceding flags are set. If this flag is set, a miniport driver should determine the transfer direction by examining the data phase for the target on the SCSI bus. If its HBA is a subordinate DMA device, such a miniport driver must update SRB_FLAGS_DATA_OUT or SRB_FLAGS_DATA_IN to the correct value before it calls ScsiPortIoMapTransfer.
SRB_FLAGS_NO_DATA_TRANSFER
Indicates no data transfer with this request. If this is set, the flags SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN, and SRB_FLAGS_UNSPECIFIED_DIRECTION are clear.
SRB_FLAGS_DISABLE_SYNCH_TRANSFER
Indicates the HBA, if possible, should perform asynchronous I/O for this transfer request. If synchronous I/O was negotiated previously, the HBA must renegotiate for asynchronous I/O before performing the transfer.
SRB_FLAGS_DISABLE_DISCONNECT
Indicates the HBA should not allow the target to disconnect from the SCSI bus during processing of this request.
SRB_FLAGS_BYPASS_FROZEN_QUEUE
Is irrelevant to miniport drivers.
SRB_FLAGS_NO_QUEUE_FREEZE
Is irrelevant to miniport drivers.
SRB_FLAGS_IS_ACTIVE
Is irrelevant to miniport drivers.
SRB_FLAGS_ALLOCATED_FROM_ZONE
Is irrelevant to miniport drivers and is obsolete to current Windows class drivers. To a Windows legacy class driver, this indicates whether the SRB was allocated from a zone buffer. If this flag is set, the class driver must call ExInterlockedFreeToZone to release the SRB; otherwise, it must call ExFreePool. New class drivers should use lookaside lists rather than zone buffers.
SRB_FLAGS_SGLIST_FROM_POOL
Is irrelevant to miniport drivers. To a Windows class driver, this indicates that memory for a scatter/gather list was allocated from nonpaged pool. If this flag is set, the class driver must call ExFreePool to release the memory after the SRB is completed.
SRB_FLAGS_BYPASS_LOCKED_QUEUE
Is irrelevant to miniport drivers. To the port driver, this flag indicates that the request should be processed whether the logical-unit queue is locked. A higher-level driver must set this flag to send an SRB_FUNCTION_UNLOCK_QUEUE request.
SRB_FLAGS_NO_KEEP_AWAKE
Is irrelevant to miniport drivers. A Windows class driver uses this flag to indicate to the port driver to report idle rather than powering up the device to handle this request.
SRB_FLAGS_FREE_SENSE_BUFFER
Indicates that either the port or the miniport driver has allocated a buffer for sense data. This informs the class driver that it must free the sense data buffer after extracting the data.
DataTransferLength
Indicates the size in bytes of the data buffer. If an underrun occurs, the miniport driver must update this member to the number of bytes actually transferred.
TimeOutValue
Indicates the interval in seconds that the request can execute before the OS-specific port driver might consider it timed out. Miniport drivers are not required to time requests because the port driver already does.
DataBuffer
Points to the data buffer. Miniport drivers should not use this value as a data pointer unless the miniport driver set MapBuffers to TRUE in the PORT_CONFIGURATION_INFORMATION for the HBA. In the case of SRB_FUNCTION_IO_CONTROL requests, however, miniport drivers can use this value as a data pointer regardless of the value of MapBuffers.
SenseInfoBuffer
Points to the request-sense buffer. A miniport driver is not required to provide request-sense data after a CHECK CONDITION.
NextSrb
Indicates the SCSI_REQUEST_BLOCK to which this request applies. Only a small subset of requests use a second SRB, for example SRB_FUNCTION_ABORT_COMMAND.
OriginalRequest
Points to the IRP for this request. This member is irrelevant to miniport drivers
SrbExtension
Points to the Srb extension. A miniport driver must not use this member if it set SrbExtensionSize to zero in the SCSI_HW_INITIALIZATION_DATA. The memory at SrbExtension is not initialized by the OS-specific port driver, and the miniport driver-determined data can be accessed directly by the HBA. The corresponding physical address can be obtained by calling ScsiPortGetPhysicalAddress with the SrbExtension pointer.
InternalStatus
Used by the SCSI Port driver, instead of SrbStatus, to report the status of the completed request whenever the request cannot be delivered to the miniport driver. In such cases, SrbStatus is set to SRB_STATUS_INTERNAL_ERROR. This member is used exclusively for communication between the SCSI Port and the class driver and should not be used by miniport drivers.
QueueSortKey
Specifies the offset from the start of the media or zero, depending on the type of the target device.
LinkTimeoutValue
offset 2c
Reserved
Reserved.
Cdb
Specifies the SCSI-2 or later command descriptor block to be sent to the target device.
Remarks
Windows storage class and filter drivers can send SRBs with the following Function values to the system port driver:
- SRB_FUNCTION_CLAIM_DEVICE to indicate that the class driver supports a peripheral identified in the SRB by the PathId, TargetId, and Lun members.
- SRB_ATTACH_DEVICE to indicate that a filter driver, layered above a class driver, wants requests for a particular peripheral to be routed first to the filter driver.
- SRB_FUNCTION_RELEASE_DEVICE to indicate that a class driver is releasing its claim on a particular peripheral.
- SRB_FUNCTION_FLUSH_QUEUE to request cancellation of any requests currently queued in the port driver to a particular peripheral.
- SRB_FUNCTION_RELEASE_QUEUE to request that the port driver release a frozen queue of requests to a particular peripheral.
Requirements
Header | srb.h (include Srb.h, Minitape.h, Storport.h) |