I would like to request approval of the the DTrace proposal for the COMSTAR SRP target port provider. The specification of the SRP provider can be viewed at: http://wikis.sun.com/display/DTrace/srp+port+provider

Your feedback is much appreciated.

Thanks,
Charles



COMSTAR DTrace Probes/Providers for SRP Target

Charles Ting
04/08/09

This document describes the Dtrace probes definition for the SRP target port
provider. The SRP target port provider provides probes for tracing SRP target
activity.



Probes
=======

Events                  Probes                  Arguments
-----------------------------------------------------------------------------

Service up              service-up              arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *

Desc: trace SRP target online event, i.e. Target X is available via Port Y.
The initiator and channel fields of the two structures left blank.

-----------------------------------------------------------------------------

Service down            service-down            arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *

Desc: trace SRP target offline event, i.e Target X became unavailable via
Port Y.  The initiator and channel fields of the two structures left blank.


-----------------------------------------------------------------------------

Login command           login-command           arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *
                                                arg[2]     srp_logininfo_t *

Desc: trace start of initiator port login.

-----------------------------------------------------------------------------

Login response          login-response          arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *
                                                arg[2]     srp_logininfo_t *

Desc: trace end of initiator port login 

-----------------------------------------------------------------------------

Logout command          logout-command          arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *

Desc: trace start of initiator port logout

-----------------------------------------------------------------------------

SCSI command            scsi-command            arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *
                                                arg[2]     scsicmd_t *
                                                arg[3]     srp_taskinfo_t *
Desc: trace start of a SCSI command

-----------------------------------------------------------------------------

SCSI response           scsi-response           arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *
                                                arg[2]     srp_taskinfo_t *

Desc: trace end of a SCSI command

-----------------------------------------------------------------------------

Task command            task-command            arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *
                                                arg[2]     srp_taskinfo_t *

Desc: trace start of a SRP task

-----------------------------------------------------------------------------

Task response           task-response           arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *
                                                arg[2]     srp_taskinfo_t *
Desc: trace end of a SRP task

-----------------------------------------------------------------------------

Buffer dispatch         xfer-start              arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *
                                                arg[2]     xferinfo_t *
Desc: IB RDMA data transfer start

-----------------------------------------------------------------------------

Buffer completion       xfer-done               arg[0]     conninfo_t *
                                                arg[1]     srp_portinfo_t *
                                                arg[2]     xferinfo_t;
Desc: IB RDMA data transfer end

-----------------------------------------------------------------------------


Types
=====

/*
 * Connection information.
 */
typedef struct conninfo {
        string ci_local;        /* the GID of the local HCA,
                                   e.g fe80000000000000xxxxxxxxxxxxxxx */
        string ci_remote;       /* the GID of the remote HCA,
                                   e.g fe80000000000000xxxxxxxxxxxxxxx */
        string ci_protocol;     /* protocol: "srp" */
} conninfo_t;


/*
 * SCSI command.
 */
typedef struct scsicmd{
        uint64_t ic_len;        /* CDB length */
        uint8_t  *ic_cdb;       /* CDB data */
} scsicmd_t


/*
 * SRP port information.
 */
typedef struct srp_portinfo {
        /* initiator */
        string  pi_initiator;   /* Initiator: eui.xxxxxxxxxxxxxxx */
        string  pi_i_sid;       /* Initiator seiion id */

        /* target */
        string  pi_target;      /* Target: eui.xxxxxxxxxxxxxxx */
        string  pi_t_sid;       /* Target session id */

        uintptr_t pi_chan_id;   /* Channel identifier */

} srp_portinfo_t;


/*
 * Login request info.
 */
typedef struct srp_logininfo {
        uint64_t li_task_tag;      /* SRP task tag */
        uint32_t li_max_it_iu_len; /* Maxium iu length that initiator can
                                      send to target */
        uint32_t li_max_ti_iu_len; /* Maxium iu length that target can
                                      send to initiator */
        uint32_t li_request_limit; /* Maximun number of SRP requests 
                                      that initiator can send on a channel */
        uint32_t reason_code;      /* Reason code */
} srp_logininfo_t;

/*
 * SRP task command.
 */
typedef struct srp_taskinfo {
        uint64_t ti_task_tag;   /* SRP task tag */
        uint64_t ti_lun;        /* Target logical unit number */
        uint8_t  ti_function;   /* Task management function */
        uint32_t tr_req_limit_delta; /* Increment of channel's request limit */
        uint8_t  ti_flag;       /* bit 2:DOOVER 3:DOUNDER 4:DIOVER 5:DIUNDER */
        uint32_t ti_do_resid_cnt;    /* Data-out residual count */
        uint32_t ti_di_resid_cnt;    /* Data-in residual count */
        uint8_t  ti_status;     /* Status of this task */
} srp_taskinfo_t;


/*
 * RDMA transfer info.
 */
 typedef struct xferinfo {
        uintptr_t xfer_laddr;        /* Local buffer address */
        uint32_t  xfer_loffset;      /* Relative offset from local buffer */
        uint32_t  xfer_lkey;         /* Access control to local memory */
        uintptr_t xfer_raddr;        /* Remote virtual address */
        uint32_t  xfer_roffset;      /* Offset from the remote address */
        uint32_t  xfer_rkey;         /* Access control to remote address */
        uint32_t  xfer_len;          /* Transfer length */
        uint8_t   xfer_type;         /* 0: read; 1: write; */
} xferinfo_t;

_______________________________________________
dtrace-discuss mailing list
[email protected]

Reply via email to