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 Fibre Channel Target Provider 1.2. Name of Document Author/Supplier: Author: Sam Cramer 1.3 Date of This Document: 07 May, 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 Fibre Channel Target Provider 1.2. Name of Document Author/Supplier: Author: Sam Cramer 1.3 Date of This Document: 07 May, 2009 4. Technical Description
The following specification describes the COMSTAR Fibre Channel 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 fc provider provides probes for tracing fibre channel port provider activity. This is a kernel provider built into the COMSTAR fc target port provider. FC Provider 4.1 Probes overview Fibre Channel Event Type Probes ------------------------ ------ Link events fc:::link-up fc:::link-down Remote Port login/logout fc:::rport-login-start fc:::rport-login-end fc:::rport-logout-start fc:::rport-logout-end Fabric login fc:::fabric-login-start fc:::fabric-login-end SCSI command/response fc:::scsi-command fc:::scsi-response Data transfer fc:::xfer-start fc:::xfer-done 4.2 Probe argument commonality 4.2.1 Arguments common to all probes All FC probes have the first argument in common: args[0] conninfo_t * fc 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; /* local host address (port WWN) */ string ci_remote; /* remote host address (port WWN) */ string ci_protocol; /* protocol (fc) */ } conninfo_t; 4.2.2 Arguments common to all probes save for link event probes All FC event probes other than link event probes have their second argument in common: args[1] fc_port_info_t * local port information The fc_port_info_t structure contains detailed information about a Fibre Channel port: typedef struct fc_port_info { string fcp_node_wwn; /* node WWN */ string fcp_sym_node_name; /* node symbolic name */ string fcp_sym_port_name; /* port symbolic name */ uint32_t fcp_port_hard_address; /* port hard address */ } fc_port_info_t; 4.2.3 Arguments common to SCSI command and data transfer probes FC SCSI command and data transfer probes have their third and fourth arguments in common: args[2] scsicmd_t * SCSI command block (cdb) args[3] fc_port_info_t * remote port 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 data transfer probes FC data transfer probes have their fifth argument in common: args[4] fc_xferinfo_t * data transfer information The fc_xferinfo_t structure contains information about the data transfer: typedef struct fc_xferinfo { uint32_t fcx_len; /* transfer length */ uint32_t fcx_offset; /* transfer offset */ uint16_t fcx_flags; /* db_flags as defined in sys/stmf.h */ } fc_xferinfo_t; 4.3 Detailed probes specification 4.3.1 Link Event Probes fc:::link-up and fc:::link-down trace Fibre Channel link-up and link-down events. Remote port information (ci_remote) is unavailable for both probes. Probes Variable Type Description ------ -------- ---- ----------- fc:::link-up, args[0] conninfo_t * connection info fc:::link-down 4.3.2 Remote Port Login/Logout Event Probes Probes Variable Type Description ------ -------- ---- ----------- fc:::rport-login-start, args[0] conninfo_t * connection info fc:::rport-login-end, args[1] fc_port_info_t * local port info fc:::rport-logout-start, args[2] fc_port_info_t * remote port info fc:::rport-logout-end args[3] int solicited login flag args[3] is 0 if the login or logout is unsolicited (inbound) and is non-zero if solicited (outbound). 4.3.3 Fabric Login Event Probes Probes Variable Type Description ------ -------- ---- ----------- fc:::fabric-login-start, args[0] conninfo_t * connection info fc:::fabric-login-end, fc:::fabric-login-end args[1] fc_port_info_t * local port info Fabric login applies only to the local port, since that's the entity that logs into the fabric. Note that there's no explicit fabric logout. Detailed local port information is only known at the end of fabric login. 4.3.4 SCSI Command Event Probes Probes Variable Type Description ------ -------- ---- ----------- fc:::scsi-command, args[0] conninfo_t * connection info fc:::scsi-response args[1] fc_port_info_t * local port info args[2] scsi_cmd_t * SCSI command block args[3] fc_port_info_t * remote port info 4.3.5 Data Transfer Event Probes Probes Variable Type Description ------ -------- ---- ----------- fc:::xfer-start, args[0] conninfo_t * connection info fc:::xfer-done args[1] fc_port_info_t * local port info args[2] scsi_cmd_t * SCSI command block args[3] fc_port_info_t * remote port info args[4] fc_xferinfo_t * data transfer info Documentation and examples can be found here: http://wikis.sun.com/display/DTrace/fibre+channel+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: FastTrack 6.6. ARC Exposure: open