I am sponsoring this fasttrack for Zhang Yi. Requested binding is Patch/Micro. 
Timeout is 07/01/2009.


Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         iSCSI initiator tunables
    1.2. Name of Document Author/Supplier:
         Author:  Zhang Yi
    1.3  Date of This Document:
        24 June, 2009

2. Project Summary
   2.1. Project Description
          This project proposes a new management interface to configure several
        parameters specific for iSCSI initiator to access a given iSCSI target.
        Together with the IMA specification[1] API, management interfaces
        are exported in library libima[2] to manage tunable parameters. And
        those tunable parameters can be dynamically applied to the iSCSI
        initiator driver via iscsiadm or other utilities using the exported
        library interface from this project.

4. Technical Description
    4.1. Details:
          Currently most parameters related to the connection behavior between
        the iSCSI initiator and the iSCSI target are hardcoded. It makes iSCSI
        initiator in Solaris inflexible to handle various scenarios. For
        example, the fixed iSCSI initiator connection retry timer (3 min) is
        not suitable in the follow scenarios:
        a. Mirrored ZFS over different iSCSI devices. If one of the mirrored
           iSCSI devices goes offline, on initiator side whole ZFS pool may
           hang for 3 minutes in IO timeout before ZFS degrade the iSCSI
           device. Here a shorter timeout value is desirable for this case.
        b. iSCSI quorum device on Sun Cluster. If iSCSI quorum device spend
           more than 3 minutes to reboot, Cluster node could never online
           this iSCSI quorum device after 3 minutes connection retry timeout.
           Here a longer timeout value is needed.

          This project will add a new option named "-T" for 'iscsiadm' utility
        to set these tunable parameters for iSCSI initiator node or a
        specified iSCSI target. And tunable parameters will be applied to
        iSCSI initiator driver in real time without reboot.
          A programmatic interface is also offered through SUN_IMA library.
        The modification of 'iscsiadm' will be based on this interface.

        *) CLI interface for 'iscsiadm' utility

           Apply tunable parameters to a specific target by using:
             "iscsiadm modify target-param -T <tunable-prop>=<value> \
              <target-name..>".
           Apply tunable parameters to initiator node by using:
             "iscsiadm modify initiator-node -T <tunable-prop>=<value>".
           List specific tunable parameters applied to given target by using:
             "iscsiadm list target-param -v [<target-name..>]".
           List tunable parameters to initiator node by using:
             "iscsiadm list initiator-node".

           Example:
             Change maximum connection retry time to 30 seconds for iSCSI target
           iqn.1986-03.com.sun:2501.600a0b800049c94 will use follow command:
             #iscsiadm modify target-param -T connloginmax=30 \
             iqn.1986-03.com.sun:2501.600a0b800049c94

             Currently supported <tunable-prop> parameters are listed below
           with corresponding descriptions.
             Tunable Parameter              Short Description
             --------------------           -------------------
             recvloginrsptimeout            Session Login Response Time
             connloginmax                   Maximum Connection Retry Time
             pollinglogindelay              Login Retry Time Interval

               The recvloginrsptimeout is to specify how long iSCSI initiator
             will wait for the response of iSCSI session login request from
             the given iSCSI target. Valid value is from 0 to 60*60, default
             to 60 seconds.

               The connloginmax is used to determine maximum iSCSI initiator
             connection retry time when iSCSI initiator to target IO timeout
             or connection failure. Valid value is from 0 to 60*60, default to
             180 seconds.

               The pollinglogindelay is used to decide time interval between
             each iSCSI session login retry when iSCSI initiator to target IO
             timeout or connection failure. Valid value is from 0 to 60*60,
             default to 60 seconds.

             More tunable parameters can be added using the same mechanism
           introduced by this project in case there are new requirements
           from customer.

        *) Programmatic interface for tunable parameters
             Programmatic interface API name with new data structure are
           defined in the exported new public header file <libsun_ima.h>,
           typedef enum {
               ISCSI_RX_TIMEOUT_VALUE = 1,
               ISCSI_CONN_DEFAULT_LOGIN_MAX = 2,
               ISCSI_LOGIN_POLLING_DELAY = 3
            } ISCSI_TUNABLE_OBJECT_TYPE;

           typedef struct _ISCSI_TUNABLE_PARAM {
               ISCSI_TUNABLE_OBJECT_TYPE tunable_objectType,
               struct {
                     IMA_UINT32 len;
                     IMA_CHAR *chars;
               } tunable_objectValue;
           } ISCSI_TUNABLE_PARAM;

          IMA_API IMA_STATUS 
          SUN_IMA_GetTunableProperties(IMA_OID oid, ISCSI_TUNABLE_PARAM *param);
          is used to get specified tunable parameter.

          IMA_API IMA_STATUS
          SUN_IMA_SetTunableProperties(IMA_OID oid, ISCSI_TUNABLE_PARAM *param);
          is used to set specified tunable parameter.

4.5 Interfaces:

    Patch/Micro release binding.

    Exported Interface              | Stability |    Description 
    --------------------------------|-----------|------------------------------ 
    SUN_IMA_GetTunableProperties    | Committed | Interface to get iSCSI
                                    |           | tunable parameters 
    SUN_IMA_SetTunableProperties    | Committed | interface to set iSCSI
                                    |           | tunable parameters 
    struct ISCSI_TUNABLE_PARAM      | Committed | <libsun_ima.h>           
    usr/sbin/iscsiadm               | Committed | iSCSI initiator CLI
                                    |           | PSARC/2003/126
    -T                              | Committed | option apply to iscsiadm
                                    |           | subcommand "modify" and object
                                    |           | of both "target-param" and
                                    |           | "initiator-node"

5. Reference Documents:

  [1] SNIA iSCSI Management API -
        http://www.snia.org/tech_activities/standards/
        curr_standards/ima/iSCSIManagementAPI_v1.1.pdf
  [2] iSCSI Management API  http://sac.sfbay/SHARC/2005/066/


6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                ON
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


Reply via email to