Subject: iSCSI: AHS use

From: Michael Smith <[email-masked]>
Date: Mon, 10 Jun 2002 10:06:16 -0700

I have some questions on the current AHS descriptions in 12-97. I just
tripped over this, so I think maybe others might too.
 
1. In 12-97, p.130 we have the definition of AHS as Multiple Additional
Header Segments (plural); switching between "AHS (singular), AHS (plural),
AHS header segments made me look closer:
 
[quote]
The BHS is a fixed-length 48-byte header segment. It MAY be followed by
Additional Header Segments (AHS), a Header-Digest, a Data Segment, and/or a
Data-Digest.

[end quote]

2. However, in the PDU format diagram on p. 131 of 12-97 it is not clear
that we have the option of zero, one or more Additional Header Segments.
After I re-read things a few times, and apologies if I have this wrong, I
think that the use of multiple Additional Header Segments is along these
lines:

(a) Use one and only one Additional Header Segment for an extended CDB (SPC
calls this a variable-length CDB). This extended CDB (or variable-length
CDB) Additional Header Segment must immediately follow the BHS. (A suggested
exact use definition of this type of Additional Header Segment coming up.)

(b) Use one and only one Additional Header Segment for an Bidirectional
Expected Read-Data Length. This Bidirectional Expected Read-Data Length
Additional Header Segment must immediately follow the BHS.

(c) Use of more than one Additional Header Segment is left up to the user.

How many Additional Header Segments were we expecting to be able to be used?
Would this maximum length of Additional Header Segments be limited only by
the TotalAHSLength (8-bit field measuring length in four-byte words or
((2**8) - 1) * 4 bytes or roughly 1 kbyte)? Can we follow an extended CDB
Additional Header Segment or a Bidirectional Expected Read-Data Length
Additional Header Segment by one or more user-defined Additional Header
Segment?

Did I get this anywhere close to correct?

3. In one of Bob Russell's emails we have the following, which does seem to
make the use of multiple Additional Header Segments a little clearer to me:

[quote http://www.pdl.cmu.edu/mailinglists/ips/mail/msg03784.html]
 
[view in fixed-width font on wide window]
     +------------------------+
     |     required BHS       | > fixed length of 48 bytes
     +------------------------+
     |     optional AHS 1     |\
     | - - - - - - - - - - -  | \
     |     optional AHS 2     |  \
     | - - - - - - - - - - -  |   > total length in AHS_length field in BHS
     |        . . . .         |  /
     | - - - - - - - - - - -  | /
     |     optional AHS n     |/
     +------------------------+
     | optional header digest | -- covers preceding (48 + AHS_length) bytes
     +------------------------+
     |                        |\
     |     optional data      | > total length in DATA_length field in BHS
     |                        |/
     +------------------------+
     |  optional data digest  | -- covers preceding (DATA_length) bytes
     +------------------------+

[end view in fixed-width font on wide window]
 
[end quote http://www.pdl.cmu.edu/mailinglists/ips/mail/msg03784.html]

Is it possible to add something like this picture to the format diagram on
p.131. I wouldn't ask if I hadn't tripped myself up on this already.
 
4. On p. 139 of 12-97 we have the following:
 
[quote]
 
9.3.5 CDB - SCSI Command Descriptor Block
There are 16 bytes in the CDB field to accommodate the commonly used CDBs.
Whenever the CDB is larger than 16 bytes, an Extended CDB AHS MUST be used
to contain the CDB spillover.
 
[end quote]

I tripped again on the term "spillover". Could we perhaps change 9.3.5 to
the following (thanks to Rob Elliott, see
http://www.pdl.cmu.edu/mailinglists/ips/mail/msg10620.html):

There are 16 bytes in the CDB field to accommodate bytes 0-15 of the
commonly used CDBs. An Extended CDB AHS MUST be used to contain bytes 16-259
of a variable-length CDB [SPC].

5. There is no description of ExtendedCDB...+ in 9.2.2.3 Extended CDB AHS

I guess we would be repeating 9.3.5 if we defined ExtendedCDB as "bytes
16-259 of a variable-length CDB", but perhaps that is not a bad thing?

Aloha
 
Mike Smith
CTO, iReady