Transport classes

Fibre Channel transport
iSCSI transport class
Serial Attached SCSI (SAS) transport class
SATA transport class
Parallel SCSI (SPI) transport class
SCSI RDMA (SRP) transport class

Transport classes are service libraries for drivers in the SCSI lower layer, which expose transport attributes in sysfs.

Fibre Channel transport

fc_get_event_number — Obtain the next sequential FC event number
fc_host_post_event — called to post an even on an fc_host.
fc_host_post_vendor_event — called to post a vendor unique event on an fc_host
fc_eh_timed_out — FC Transport I/O timeout intercept handler
fc_remove_host — called to terminate any fc_transport-related elements for a scsi host.
fc_remote_port_add — notify fc transport of the existence of a remote FC port.
fc_remote_port_delete — notifies the fc transport that a remote port is no longer in existence.
fc_remote_port_rolechg — notifies the fc transport that the roles on a remote may have changed.
fc_block_scsi_eh — Block SCSI eh thread for blocked fc_rport
fc_vport_create — Admin App or LLDD requests creation of a vport
fc_vport_terminate — Admin App or LLDD requests termination of a vport

The file drivers/scsi/scsi_transport_fc.c defines transport attributes for Fibre Channel.

iSCSI transport class

iscsi_create_flashnode_sess — Add flashnode session entry in sysfs
iscsi_create_flashnode_conn — Add flashnode conn entry in sysfs
iscsi_find_flashnode_sess — finds flashnode session entry
iscsi_find_flashnode_conn — finds flashnode connection entry
iscsi_destroy_flashnode_sess — destroy flashnode session entry
iscsi_destroy_all_flashnode — destroy all flashnode session entries
iscsi_scan_finished — helper to report when running scans are done
iscsi_block_scsi_eh — block scsi eh until session state has transistioned
iscsi_unblock_session — set a session as logged in and start IO.
iscsi_create_session — create iscsi class session
iscsi_destroy_session — destroy iscsi session
iscsi_create_conn — create iscsi class connection
iscsi_destroy_conn — destroy iscsi class connection
iscsi_session_event — send session destr. completion event

The file drivers/scsi/scsi_transport_iscsi.c defines transport attributes for the iSCSI class, which sends SCSI packets over TCP/IP connections.

Serial Attached SCSI (SAS) transport class

sas_remove_children — tear down a devices SAS data structures
sas_remove_host — tear down a Scsi_Host's SAS data structures
sas_get_address — return the SAS address of the device
sas_tlr_supported — checking TLR bit in vpd 0x90
sas_disable_tlr — setting TLR flags
sas_enable_tlr — setting TLR flags
sas_phy_alloc — allocates and initialize a SAS PHY structure
sas_phy_add — add a SAS PHY to the device hierarchy
sas_phy_free — free a SAS PHY
sas_phy_delete — remove SAS PHY
scsi_is_sas_phy — check if a struct device represents a SAS PHY
sas_port_add — add a SAS port to the device hierarchy
sas_port_free — free a SAS PORT
sas_port_delete — remove SAS PORT
scsi_is_sas_port — check if a struct device represents a SAS port
sas_port_get_phy — try to take a reference on a port member
sas_port_add_phy — add another phy to a port to form a wide port
sas_port_delete_phy — remove a phy from a port or wide port
sas_end_device_alloc — allocate an rphy for an end device
sas_expander_alloc — allocate an rphy for an end device
sas_rphy_add — add a SAS remote PHY to the device hierarchy
sas_rphy_free — free a SAS remote PHY
sas_rphy_delete — remove and free SAS remote PHY
sas_rphy_unlink — unlink SAS remote PHY
sas_rphy_remove — remove SAS remote PHY
scsi_is_sas_rphy — check if a struct device represents a SAS remote PHY
sas_attach_transport — instantiate SAS transport template
sas_release_transport — release SAS transport template instance

The file drivers/scsi/scsi_transport_sas.c defines transport attributes for Serial Attached SCSI, a variant of SATA aimed at large high-end systems.

The SAS transport class contains common code to deal with SAS HBAs, an aproximated representation of SAS topologies in the driver model, and various sysfs attributes to expose these topologies and management interfaces to userspace.

In addition to the basic SCSI core objects this transport class introduces two additional intermediate objects: The SAS PHY as represented by struct sas_phy defines an "outgoing" PHY on a SAS HBA or Expander, and the SAS remote PHY represented by struct sas_rphy defines an "incoming" PHY on a SAS Expander or end device. Note that this is purely a software concept, the underlying hardware for a PHY and a remote PHY is the exactly the same.

There is no concept of a SAS port in this code, users can see what PHYs form a wide port based on the port_identifier attribute, which is the same for all PHYs in a port.

SATA transport class

The SATA transport is handled by libata, which has its own book of documentation in this directory.

Parallel SCSI (SPI) transport class

spi_schedule_dv_device — schedule domain validation to occur on the device
spi_display_xfer_agreement — Print the current target transfer agreement
spi_populate_tag_msg — place a tag message in a buffer

The file drivers/scsi/scsi_transport_spi.c defines transport attributes for traditional (fast/wide/ultra) SCSI busses.

SCSI RDMA (SRP) transport class

srp_tmo_valid — check timeout combination validity
srp_start_tl_fail_timers — start the transport layer failure timers
srp_reconnect_rport — reconnect to an SRP target port
srp_timed_out — SRP transport intercept of the SCSI timeout EH
srp_rport_get — increment rport reference count
srp_rport_put — decrement rport reference count
srp_rport_add — add a SRP remote port to the device hierarchy
srp_rport_del — remove a SRP remote port
srp_remove_host — tear down a Scsi_Host's SRP data structures
srp_stop_rport_timers — stop the transport layer recovery timers
srp_attach_transport — instantiate SRP transport template
srp_release_transport — release SRP transport template instance

The file drivers/scsi/scsi_transport_srp.c defines transport attributes for SCSI over Remote Direct Memory Access.