Subject: Re: iSCSI: AHS use

From: "Julian Satran" <[email-masked]>
Date: Tue, 11 Jun 2002 02:44:54 +0300

Michael,

I am not sure to change the wording to fit the 259 limit of the CDB as set 
by current SPC - as SPC changes too.
We dot envision many new AHSs - but the format design allows for them.
You are correct that the design allows for several AHSs up to the total 
predefined length (and having one predefined max length was not my first 
choice but is the result of some debate).

Julo

Michael Smith <[email-masked]>
Sent by: [email-masked]
06/10/2002 08:06 PM
Please respond to Michael Smith

        To:     Michael Smith <[email-masked]>, [email-masked]
        cc: 
        Subject:        iSCSI: AHS use

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