[T10] SPC5r20a - 18.104.22.168 - 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
MS 6TYA, 9000 S. Rita Rd., Tucson, AZ 85744
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 - 22.214.171.124 - 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.
126.96.36.199 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, a PAGE LENGTH field, a DESCRIPTOR LENGTH field, an AVAILABLE DATA
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
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...
More information about the T10