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


Reply via email to