[T10] SPC5r20a - - Allocation length confusing.

Kevin D Butt kdbutt at us.ibm.com
Wed Feb 27 15:25:34 PST 2019

The key is to pay attention to the words, " exceeds the maximum value that 
the ALLOCATION LENGTH field in combination with other fields in the CDB is 
capable of specifying". This is not talking about what value is in the 
allocation length field, but the maximum value that could be specified. If 
there is more data to transfer than what can be specified, then return the 
CHECK CONDITION. e.g., allocation length field is 4 bytes. Information 
available to be transferred is greater than 2^32 (4294967296), then Check 
Condition is returned.

Kevin D. Butt
SCSI Architect, Tape Firmware, Data Retention Infrastructure
T10 Standards
MS 6TYA, 9000 S. Rita Rd., Tucson, AZ 85744
Tel: 520-799-5280
Fax: 520-799-2723 (T/L:321)
Email address: kdbutt at us.ibm.com

=========== Interesting Links ===========
[ IBM Tape Storage ]  https://www.ibm.com/it-infrastructure/storage/tape
[ SSIC ] 
[ LTO & 3592 ISV Support Matrix ] 
[ LTO SCSI Reference ] 
[ 3592 SCSI Reference ] 

From:   <t10 at terabyteunlimited.com>
To:     <t10 at t10.org>
Date:   02/27/2019 16:07
Subject:        [T10] SPC5r20a - - Allocation length confusing.
Sent by:        t10-bounces at t10.org

If you read the section in the 3rd paragraph it says to transfer bytes 
until ALLOCATION LENGTH field has been transferred (so truncation can 
occur and size needed report).  Yet, the last paragraph says if what you 
have to transfer is more bytes than ALLOCATION LENGTH then don?t transfer 
anything and report an error.   So which is it?  REPORT LUNS for example. Allocation length
The ALLOCATION LENGTH field specifies the maximum number of bytes or 
blocks that an application client has allocated in the Data-In Buffer. The 
ALLOCATION LENGTH field specifies bytes unless a different requirement is 
stated in the command definition.
An allocation length of zero specifies that no data shall be transferred. 
This condition shall not be considered an error.
The device server shall terminate transfers to the Data-In Buffer when the 
number of bytes or blocks specified by the ALLOCATION LENGTH field have 
been transferred or when all available data have been transferred, 
whichever is less. The allocation length is used to limit the maximum 
amount of variable length data (e.g., mode data, log data, diagnostic 
data) returned to an application client. If the information being 
transferred to the Data-In Buffer includes fields containing counts of the 
number of bytes in some or all of the data (e.g., aPARAMETER DATA LENGTH 
field), then the contents of these fields shall not be altered to reflect 
the truncation, if any, that results from an insufficient ALLOCATION 
LENGTH value, unless the standard that describes the Data-In Buffer format 
states otherwise.
If the amount of information that is available to be transferred exceeds 
the maximum value that the ALLOCATION LENGTH field in combination with 
other fields in the CDB is capable of specifying, then no data shall be 
transferred and the command shall be terminated with CHECK CONDITION 
status, with the sense key set to ILLEGAL REQUEST, and the additional 
sense code set to INVALID FIELD IN CDB.
T10 mailing list
T10 at t10.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.t10.org/pipermail/t10/attachments/20190227/97c7f82a/attachment.html>

More information about the T10 mailing list