SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


    [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

    Value of "unlimited". Was Re: iSCSI: current UNH Plugfest



    Hi all.
    
    I fully agree with the suggestions for issue 4. If we really need to reserve a
    value to mean "unlimited" or "infinite", could we use a value of all bits set to
    one to indicate this? (Specifically, 0xFFFFFF or 0xFFFFFFFF would be great for
    most 32-bit processors and above.) This would make arithmetic comparisons more
    intuitive, IMHO.
    
    "Robert D. Russell" wrote:
    
    > Attached are the new issues that arose during the iSCSI plugfest
    > at UNH on Wednesday 31-Oct-2001.
    >
    > (Note: these issues do not take into account any modifications or
    > clarifications that occured in the standard due to the issues raised
    > on Monday or Tuesday.)
    >
    > 4. Three numeric keys (MaxRecvPDULength, MaxBurstSize, FirstBurstSize)
    >    now allow: "A value of 0 indicates no limit."
    >
    >    Is this useful?  Does it buy anything?
    >
    >    The difficulties implementers are having with this are:
    >
    >    1) It is a special case.
    >    2) It causes discontinuous ranges (for example, [0,64..2**24])
    >    3) It violates the min/max function normally used for the key.
    >    4) There is always a limit anyway.
    >
    >    Consider FirstBurstSize, which can have a value that is described
    >    as "<0|number-64-2**24>", and for which the minimum of the 2 numbers
    >    is selected.
    >
    >    I one side offers 0 to mean unlimited, and the other side
    >    has a limit, it will reply with that limit, say 128 Kbytes.
    >    Therefore, the result is not min(0, 128K) but rather max(0, 128K).
    >    The statement in the standard that "the minimum of the 2 numbers is
    >    selected" is therefore wrong when one of the numbers is 0.
    >
    >    Furthermore, when an initiator or target receives an offer for one
    >    of these keys, it cannot simply check that the offered value is
    >    legal by testing it against some minimum and maximum.  It must first
    >    check for 0 and then only if that check shows the value is non-zero
    >    can it do the min/max range check for legality (i.e., 64-2**24).
    >
    >    Finally, there is always a limit. If nothing else it is the
    >    limit imposed by the 24-bit DataSegmentLength field of the PDU
    >    requesting the transfer.  It is useless to specify a FirstBurstSize
    >    (or MaxRecvPDULength or MaxBurstSize) any bigger than that, because
    >    the largest possible DataSegmentLength in any PDU that can use
    >    this value is 2**24-1.
    >
    >    The suggestion is to just eliminate this special case of 0 and require
    >    that the range 64-to-(2**24-1) be used instead -- it has exactly the
    >    same effect in all cases, it is easier to describe in the standard
    >    because it avoids all the extra words, and it is easier to code
    >    because it avoids all the special cases.
    >
    >    NOTE: the standard should specify the limit in the ranges for
    >    MaxRecvPDULength, MaxBurstSize, and FirstBurstSize as 2**24-1 instead
    >    of 2**24.  The number 2**24 cannot be represented in the 24-bit
    >    DataSegmentLength field and therefore can never be used.
    
    --
    Tow Wang
    Adaptec Software Engineer       Telephone: 408 957 4838
    Mail stop 46                               800 869 8883 x4838
    691 South Milpitas Boulevard    Fax:       530 686 8023
    Milpitas, California 95035      E-mail:    Tow_Wang@adaptec.com
    
    
    


Home

Last updated: Tue Nov 27 20:17:47 2001
7921 messages in chronological order