DTrace COMSTAR SCSI RDMA Protocol Target Provider [PSARC/2009/337 Self Review]
Adam Leventhal
ahl at zion.sfbay.sun.com
Wed Jun 3 13:37:36 PDT 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:
DTrace COMSTAR SCSI RDMA Protocol Target Provider
1.2. Name of Document Author/Supplier:
Author: Charles Ting
1.3 Date of This Document:
03 June, 2009
4. Technical Description
Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
DTrace COMSTAR SCSI RDMA Protocol Target Provider
1.2. Name of Document Author/Supplier:
Author: Charles Ting
1.3 Date of This Document:
01 June, 2009
4. Technical Description
The following specification describes the COMSTAR SRP Target
provider for DTrace. It has been reviewed and approved by the DTrace
community; the PSARC case is closed approved automatic to record the
interface. The stability is Committed and the binding is Patch.
The srp provider provides probes for tracing SRP port provider activity.
This is a kernel provider built into the COMSTAR srp target port provider.
SRP Provider
4.1 Probes overview
SRP Event Type Probes
------------------------ ------
Service up/down events srp:::service-up
srp:::service-down
Login/logout srp:::login-command
srp:::login-response
srp:::logout-command
Task cwcommand/response srp:::task-command
srp:::task-response
SCSI command/response srp:::scsi-command
srp:::scsi-response
Buffer dispatch/completion srp:::xfer-start
srp:::xfer-done
4.2 Probe argument commonality
4.2.1 Arguments common to all probes.
All SRP probes have the first and second arguments in common:
args[0] conninfo_t * srp connection information
The conninfo_t structure is already used by the iSCSI target provider (iscsi),
and is intended for use by all provider which are providing some higher
level protocol (e.g. iscsi, nfs, http, ftp).
typedef struct conninfo {
string ci_local; /* GID of the local HCA */
string ci_remote; /* GID of the remote HCA */
string ci_protocol; /* protocol (ib) */
} conninfo_t;
args[1] srp_portinfo_t * srp port information
The srp_portinfo_t structure contains detailed information about a SRP
connection:
typedef struct srp_portinfo {
string pi_initiator; /* Initiator EUI name */
string pi_i_sid; /* Initiator session id */
string pi_target; /* Target EUI name */
string pi_t_sid; /* Target session id */
uintptr_t pi_chan_id; /* Channel identifier */
} srp_portinfo_t;
4.2.2 Arguments common to SRP login-command and login-response probes.
args[2] srp_logininfo_t * srp login information
The srp_logininfo_t structure contains the information about login parameters
or the reason code of login failure.
typedef struct srp_logininfo {
/* SRP task tag */
uint64_t li_task_tag;
/* Maximum iu length that initiator can send to target */
uint32_t li_max_it_iu_len;
/* Maximum iu length that target can send to initiator */
uint32_t li_max_ti_iu_len;
/* Maximum number of SRP requests that initiator can send
on a channel */
uint32_t li_request_limit;
} srp_logininfo_t;
4.2.3 Arguments common to scsi-command, scsi-response, task-command and
task-response probes.
Argument for scsi-response, task-command and task-response probes:
args[2] srp_taskinfo * srp task information
The srp_taskinfo_t structure contains information about a srp task.
typedef struct srp_taskinfo {
/* SRP task tag */
uint64_t ti_task_tag;
/* Target logical unit number */
uint64_t ti_lun;
/* Task management function */
uint8_t ti_function;
/* Increment of channel's request limit */
uint32_t ti_req_limit_delta;
/* bit 2:DOOVER 3:DOUNDER 4:DIOVER 5:DIUNDER */
uint8_t ti_flag;
/* Data-out residual count */
uint32_t ti_do_resid_cnt;
/* Data-in residual count */
uint32_t ti_di_resid_cnt;
/* Status of this task */
uint8_t ti_status;
} srp_taskinfo_t;
Arguments for scsi-command probe:
args[2] scsicmd_t * SCSI command block (cdb)
args[3] srp_taskinfo * srp task information
The scsicmd_t structure contains information about SCSI command blocks:
typedef struct scsicmd {
uint64_t ic_len; /* CDB length */
uint8_t *ic_cdb; /* CDB data */
} scsicmd_t;
4.2.4 Arguments common to xfer-start and xfer-done probes.
args[2] xferinfo_t * data transfer information
The xferinfo_t structure contains information about the data transfer.
typedef struct xferinfo {
/* local buffer address */
uintptr_t xfer_laddr;
/* offset within the local buffer */
uint32_t xfer_loffset;
/* access control to local memory */
uint32_t xfer_lkey;
/* remote virtual address */
uintptr_t xfer_raddr;
/* offset from the remote address */
uint32_t xfer_roffset;
/* access control to remote virtual address */
uint32_t xfer_rkey;
/* transfer length */
uint32_t xfer_len;
/* Read or Write */
uint32_t xfer_type;
} xferinfo_t;
4.3 Probes summary
Events Probes Arguments
-----------------------------------------------------------------------------
Service up service-up arg[0] conninfo_t *
arg[1] srp_portinfo_t *
-----------------------------------------------------------------------------
Service down service-down arg[0] conninfo_t *
arg[1] srp_portinfo_t *
-----------------------------------------------------------------------------
Login command login-command arg[0] conninfo_t *
arg[1] srp_portinfo_t *
arg[2] srp_logininfo_t *
-----------------------------------------------------------------------------
Login response login-response arg[0] conninfo_t *
arg[1] srp_portinfo_t *
arg[2] srp_logininfo_t *
-----------------------------------------------------------------------------
Logout command logout-command arg[0] conninfo_t *
arg[1] srp_portinfo_t *
-----------------------------------------------------------------------------
SCSI command scsi-command arg[0] conninfo_t *
arg[1] srp_portinfo_t *
arg[2] scsicmd_t *
arg[3] srp_taskinfo_t *
-----------------------------------------------------------------------------
SCSI response scsi-response arg[0] conninfo_t *
arg[1] srp_portinfo_t *
arg[2] srp_taskinfo_t *
-----------------------------------------------------------------------------
Task command task-command arg[0] conninfo_t *
arg[1] srp_portinfo_t *
arg[2] srp_taskinfo_t *
-----------------------------------------------------------------------------
Task response task-response arg[0] conninfo_t *
arg[1] srp_portinfo_t *
arg[2] srp_taskinfo_t *
-----------------------------------------------------------------------------
Buffer dispatch xfer-start arg[0] conninfo_t *
arg[1] srp_portinfo_t *
arg[2] xferinfo_t *
-----------------------------------------------------------------------------
Buffer completion xfer-done arg[0] conninfo_t *
arg[1] srp_portinfo_t *
arg[2] xferinfo_t;
-----------------------------------------------------------------------------
Documentation and examples can be found here:
http://wikis.sun.com/display/DTrace/srp+port+Provider
The table below describes the DTrace stability levels
| Name Data Class
-------------+-------------------------------------------
Provider | Evolving Evolving ISA
Module | Private Private Unknown
Function | Private Private Unknown
Name | Evolving Evolving ISA
Arguments | Evolving Evolving ISA
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
OS/Net
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
OS/Net
6.5. ARC review type: Automatic
6.6. ARC Exposure: open
More information about the opensolaris-arc
mailing list