Subject: RE: iscsi : default iscsi mode page settings.

From: "Sanjeev Bhagat (TRIPACE/Zoetermeer)" <[email-masked]>
Date: Wed, 26 Sep 2001 00:06:47 +0200

Julo, John J&J :),

So I see that you basically come to the point that FirstBurstSize and
MaxBurstSize field be put into the login keys. If you agree this, and if i
have to see the SCSI mode page parameters, the only odd field left out is
EMDP (enable modify data pointer). This should also be included in
login/text keys. Why should this be left out alone? The inititator will need
to make an extra mode sense command to know this. We should either keep all
three parameters readable through mode sense command or login /text keys or
both.

By the way in my view there is no SCSI (CDB) command to set transport mode
page parameters. Also a zero copy buffer operation to SCSI is only possible
if there is no missing data in the buffer.

Regards,
Sanjeev

-----Original Message-----
From: John Hufferd [mailto:[email-masked]]
Sent: Tuesday, September 25, 2001 10:26 PM
To: Julian Satran
Cc: [email-masked]
Subject: Re: iscsi : default iscsi mode page settings.

Julian,
First I think that a good design will attempt to have a Zero Copy type
buffering operation, from the time the data arrives from the Transport
through the use by SCSI.

However, perhaps this can be resolved a different way (perhaps you have
even suggested it):

Suppose the only way the Burst parameters (and maybe other transport
parameters) can be set is via the Login/Text commands, and yet let the
values be seen by either Login/Text or the Mode Page commands, perhaps all
requirements can be met, and we can get off this discussion.

In other words, iSCSI will see the values and can save it in local working
variables, while also setting the Mode Page stuff.  The implementation
would be that Transport Mode-Page items can not be set by SCSI commands.

.
.
.
John L. Hufferd
Senior Technical Staff Member (STSM)
IBM/SSG San Jose Ca
Main Office (408) 256-0403, Tie: 276-0403,  eFax: (408) 904-4688
Home Office (408) 997-6136
Internet address: [email-masked]

Julian Satran/Haifa/IBM@[email-masked] on 09/25/2001 12:00:43 PM

Sent by:  [email-masked]

To:   [email-masked]
cc:
Subject:  Re: iscsi : default iscsi mode page settings.

John,

I understand this but then we have to move both and First and MaxBurstSize
and we have created a problem for SCSI or BCM.

My assumption was that as the cache is mainly a SCSI design (transport uses
it only as a source and sink - transport has it's own buffers that form the
window) dependent on device characteristics it may want to control the
buffers and the traffic mix.

And the mode page table will be accessible to both - obviously with only
one of them having write rights.

Regards,
Julo

                    John
                    Hufferd@IBMUS        To:     Julian
Satran/Haifa/IBM@IBMIL
                                         cc:     [email-masked]
                    25-09-01 19:53       From:   John Hufferd/San
Jose/IBM@IBMUS
                                         Subject:     Re: iscsi : default
iscsi mode page
                                         settings.(Document link: Julian
Satran - Mail)

Julian.
Thank you for taking the time to express your views, in this way.  That
type of dialog can help push the debate forward.

Now let me expressed some views that I hold, and ask you to let me know
where I am wrong.

I have viewed the Buffer/Cache Manager as an independent entity that
belongs to the "Box" (or the embedded OS).  I have not viewed the
Buffer/Cache Manager as being a SCSI entity.  Instead I have viewed SCSI as
a user of the Box services called Buffer/Cache Manager.

Likewise, I have viewed the Transport as a user of this same Buffer/Cache
Manager(B/CM).

I can understand that the B/CM can have certain input and output flows that
it needs to be designed to handle.  Further I understand that part of that
design should factor in the needs of the SCSI LUs to consume Buffer Space.
But the requirements of the Transport also needs to be factored in.

As a result, I expect that there needs to be some defaults per link, and if
the Transport is to negotiate Burst values, there probably needs to be an
interface with the B/CM to ensure that the right values are negotiated.

However, it is not clear that it makes sense for the iSCSI layer to keep
polling (interfacing to) the B/CM just in case a SCSI command has changed
the Mode Pages, nor does it see reasonable for iSCSI to inspect the CDBs to
see if its mode Page items are being changed.

So if it is not affected by a SCSI command and is only handled with
Login/Text Command, then an approprate interface between the B/CM can be
used to query about the approprate values to negotiate at any specific
time.  I think this is a reasonable and approprate design.

This is why I have come to the conclusion that the burst values (other then
defaults, if any) should not be a Mode Page item.

Now it is clearly possible that I have missed something important here, so
please let me know what it is.

.
.
.
John L. Hufferd
Senior Technical Staff Member (STSM)
IBM/SSG San Jose Ca
Main Office (408) 256-0403, Tie: 276-0403,  eFax: (408) 904-4688
Home Office (408) 997-6136
Internet address: [email-masked]

Julian Satran/Haifa/IBM@[email-masked] on 09/24/2001 11:28:15 PM

Sent by:  [email-masked]

To:   [email-masked]
cc:
Subject:  Re: iscsi : default iscsi mode page settings.

Sanjeev,

We can set any of those parameters wherever you want as its clearly a
protocol prerogative.
The one thing that I am trying to avoid is having one parameter being
handled in two ways (It caused me more trouble that it was worth in the
past and required a lot of logic).
As such we have two consideration when selecting location:

   legacy
   what layer is the most affected by it

It looks to me that association of sink buffers at targets is mostly a SCSI
issue and it is dependent on the device type,  the relative speed of the
transport and device, QOS requirements at device.  Data is already in the
SCSI realm (not anymore individual PDUs but sequences that are governed by
SCSI needs and (including fairness rules between LUs attached to the same
bus). That is why we have those bursts - iSCSI does not need them - SCSI
may need them for multiplexing and buffer limitations of its own.   As far
as iSCSI is concerned bursts are just trouble.  But without them a pipe
with a limited window will serve one LU and even beyond it's real
capabilites.   The multiplexing capability is needed by SCSI and is offered
in different ways on different transports. Some "buses" have a "built-in"
multiplexing capability. TCP does not and iSCSI adds it to it by the "burst
limitation".

All this said and based on an earlier comment made by Bob Snively that this
could be a good criteria for splitting parameters between text and mode
pages - I think that the split we have now, even if not built according to
every developers wet dreams, is reasonable.

Julo

                    "Sanjeev Bhagat
                    \(TRIPACE/Zoetermee       To:     "Santosh Rao"
<[email-masked]>, John
                    r\)"                       Hufferd/San Jose/IBM@IBMUS
                    <iscsi_t10@sanjeevb       cc:     Julian
Satran/Haifa/IBM@IBMIL,
                    hagat.com>                 <[email-masked]>
                                              Subject:     Re: iscsi :
default iscsi mode page
                    25-09-01 01:58             settings.
                    Please respond to
                    "Sanjeev Bhagat
                    \(TRIPACE/Zoetermee
                    r\)"

Julian, Santosh,

Can we make all the SCSI mode page paramters be made as login keys? Why
should they be kept in a seperate mode page at all??

Sanjeev
----- Original Message -----
From: "John Hufferd" <[email-masked]>
To: "Santosh Rao" <[email-masked]>
Cc: "Julian Satran" <[email-masked]>; <[email-masked]>
Sent: Monday, September 24, 2001 10:34 PM
Subject: Re: iscsi : default iscsi mode page settings.

>
> In addition to what Santosh said,  If I understand this right,
> I think it is a problem for iSCSI to have to keep going across layers to
> determine what the values are.  Since iSCSI Target will not see the CDB
> that caused the values to change.
>
> Now if the value in the mode page is only the default, that would be a
> different issue.
>
> .
> .
> .
> John L. Hufferd
> Senior Technical Staff Member (STSM)
> IBM/SSG San Jose Ca
> Main Office (408) 256-0403, Tie: 276-0403,  eFax: (408) 904-4688
> Home Office (408) 997-6136
> Internet address: [email-masked]
>
>
> Santosh Rao <[email-masked]>@ece.cmu.edu on 09/24/2001 12:28:43 PM
>
> Sent by:  [email-masked]
>
>
> To:   Julian Satran/Haifa/IBM@IBMIL
> cc:   [email-masked]
> Subject:  Re: iscsi : default iscsi mode page settings.
>
>
>
> Julian Satran wrote:
>
> > I can sympathize with you wanting to use most of the parameters in
iSCSI
> -
> > but the values are in fact restrictions that SCSI places on iSCSI.
>
> Julian,
>
> I'm confused by your response.
>
> The SPC-2 description of Disconnect-Reconnect mode page indicates that :
> "The parameters appropriate to each protocol and their interpretation for
> that protocol may
> be specified in the individual protocol documents".
>
> FYI, SPI[-4] has chosen not to attach any semantics to FirstBurstSize for
> the pSCSI
> transport. Thus, iscsi is within its rights to declare this field as
> reserved and attach no
> meaning to it in the mode page. The FirstBurstSize can be negotiated
during
> iscsi login
> through a login key.
>
>
> > Nevertheless the discussion is rather academic because SCSI can hand
> those
> > parameters to iSCSI.
>
> Again, I'm confused by your response. The reasons I'm suggesting the use
of
> a login key
> instead of the mode page method are :
>
>    * More accurate scope (applies only to this I-T nexus).
>
>    * More optimal negotiation and reduced overhead in the establishment
of
> the I-T nexus. (2
>      less SCSI commands per I-T nexus establishment.).
>
>    * Enables faster I/O scan times due to lesser on-the-wire activity
> during I-T nexus
>      establishment.
>
>    * Allows less room for error in the I-T nexus establishment (no
> possiblity of failure to
>      establish I-T nexus due to mode sense/select command failure).
>
>    * Avoids mode select wars that can occur when target uses shared mode
> pages.
>
>    * Simpler initiator implementations since they can avoid embedding
SCSI
> command set
>      knowledge as well as code to build/parse SCSI commands. Also, they
can
> avoid extra code
>      that is required to snoop for CHECK CONDITION with (sense key=UA,
ASC
> ="mode parameters
>      changed") in order to re-issue a mode sense to determine new values
> for FirstBurstSize.
>
>    * Less code to interact with SCSI ULP application client to
co-ordinate
> the mode page
>      values b/n the ULP & LLP.
>
>    * Can use un-solicited data from the very first scsi command in the
> session.
>
> I don't consider any of the above reasons to be academic and would like
to
> know which ones
> among the above do you believe are academic and why ?
>
>
> > SCSI can handle those parameters dynamically. iSCSI may have trouble
> > handling this type of negotiation dynamically over several connections.
>
> This is exactly the kind of stuff we don't need and should actually be
> trying to avoid. What
> good does dynamically changing FirstBurstSize serve ? Dynamically
changing
> FirstBurstSize
> would only be achieved with least side-effects if :
> 1) The mode select implementation on target is not using shared mode
pages.
> 2) The initiator has quiesced I/O prior to issuing the mode select for
the
> change.
>
> Neither of the above 2 conditions would typically apply and any dynamic
> change of
> FirstBurstSize would only cause initiators to see a bunch of side-effects
> such as :
> a) Active outbound I/Os aborted by the target with a CHECK CONDITION due
to
> "not enough
> un-solicited data".
> b) UA CHECK CONDITION for "mode parameters changed".
>
> In the interests of simplification and avoiding disruption of active I/O,
> such modifications
> must be avoided as far as possible. One way to achieve that is to use a
> login key and make
> it LO.
>
>
> >
> > Resource-wise (as Bob Snively has pointed out) those are SCSI issues.
> >
> > A nice way out would be to ask T10 for a text mode negotiaton :-)
>
> Once again, I'm perplexed by your response. I'm not saying that text mode
> negotiation is the
> reason I suggest moving this to a login key. The main objective is to
> isolate such
> negotiation within the iscsi layer in an iscsi specific PDU that is a
part
> of the iscsi
> login process.
>
> Hope you will consider all of the above factors.
>
> Thanks,
> Santosh
>
> ps : [I wonder if there are any others on this list who care to voice
their
> opinion on this
> issue. (??). ]

---

From: James Smart <[email-masked]>
Date: Wed, 26 Sep 2001 15:36:22 -0400

As a futher complexity nit....
If the iSCSI layer must snoop mode select commands - it must snoop the entire
i/o from end to end (cmd, data and response). If the target or attached SCSI
layer rejects the mode select, it must not change operational parameters until
the accepted status is received. Under the appropriate check condition, the
target may actually accept the change, but rounded the values - and the iSCSI
layer then is dependent on another Mode Select being issued to make sure it has
the right value... Nasty for normal target/initiator implementations, very ugly
for bridging functions.

I am firmly in the camp that iscsi transport parameters be maintained by iscsi
mechanisms - thus it should be a login key. Although I won't win this one - I
further believe that these things should not be reflected in SCSI mode pages at
all, for all the application/compatibility/multi-initiator/snooping reasons
pointed out. Besides, iSCSI should not be as dependent upon SCSI pass through
(thus, I assume, the use of mode pages) for device management as previous
transports were (iSCSI should have SNMP support present). It'd be nice to have
iSCSI put a stake in the ground and clean up this issue rather than propagate
it.

-- James