emx - Device Driver for the Emulex Fibre Channel Host Adapter
bus emx0 at pci?
controller scsiX at emx0
bus emx1 at pci? controller scsiY at emx1
bus emxN at pci? controller scsiZ at emxN
The emx driver controls and manages the Emulex Fibre Channel Host Adapter. The emx driver is fully integrated with the CAM SCSI I/O subsystem to provide connnectivity to FCP (e.g. SCSI) devices attached via the Fibre Channel adapter. In addition to acting as an FCP initiator, the emx driver also functions as a FCP target. CAM Target Mode peripheral drivers are also supported.
In most cases, FCP on Fibre Channel (FC) maps very well into the existing paradigms for Parallel SCSI and SCSI-2. However, one area that differs is is in addressing. Parallel SCSI commonly has fixed Target ids and the range of Target Ids is small. Fibre Channel on the other hand, has a large address capacity (2^24 bits - over 16 million addresses) and the addresses are not necessarily fixed. To support high availability, a device may commonly change its physical FC address as it moves between redundant components. Complicating this issue is that the physical Target Ids of parallel SCSI are exposed in the namespace of the SCSI disk and tape drivers.
To deal with non-persistent and high capacity physical addresses, the emx driver uses a low-level Fibre Channel world wide name to identify a device. The emx driver assigns a target id to each world wide name it sees (on a FIFO basis) and translates the Target Id to the physical address as i/o requests are issued to the Fibre Channel interconnect. Thus, regardless of the physical address the device uses, it is always seen at the same Target Id to CAM. The emx driver saves the world wide name to Target Id mappings for each adapter to an on disk database (/etc/emx.db). The database allows for the mapping to remain persistent across power cycles and reboots. A human readable form of this file is also written to /etc/emx.info. If you need to modify any Target Id mappings, you can do so via /sys/data/emx_data.c (see emx_data.c(4)). Note that this persistence model implies that that you must change the driver Target Id mappings whenever a device is swapped out with a replacement and/or permanently removed from the FC configuration. As target id mappings are assigned per adapter on a first-seen/first assigned basis, it is quite likely that the same storage entity attached to 2 adapters will be assigned different target ids. As the CAM SCSI disk and tape subsystems are limited by their SCSI-2 namespace, only 8 target id's can been seen via the emx driver. The driver may assign devices target ids beyond the 0-7 range. If the driver does so, it will announce that the device is invisible to the CAM via a console message and/or error log entry. As the adapter responds as a target device on the FC interconnect, it will typically consume one of the 8 available target ids (as will any other adapters also on the same FC interconnect).
The emx driver currently provides Class 3 operation in a Switch-based Fabric configuration.
FC storage devices cannot be used for boot, dump, or swap. FC devices are supported as a data-only devices.
Due to the way sense data is handled in FCP, CAM SCSIIO CCB's that have AUTOSENSE disabled (CAM_DIS_AUTOSENSE) will be rejected with a CAM_PROVIDE_FAIL status.
Only a Point-to-Point connection to a FC switch is supported. Direct connections without an intervening switch are not supported.
Although functional, Arbitrated Loop configurations are not supported.
Due to the SCSI-2 limitations inherent in the design of Target Mode operation in the CAM specification, specifically in the area of sense data handling, Tagged Command Queuing is not supported in the Target Mode portion of the emx driver.
The device driver module. Configuration file for the emx device driver. Allows the manipulation of CAM Target Id to FC N*Port mappings. The binary file containing the persistent CAM Target Id to Fibre Channel N*_Ports mappings for each emx adapter. A backup copy of the /etc/emx.db file. Text file representing the contents of the /etc/emx.db file. This is a readable form of the persistent CAM Target Id to Fibre Channel N*_Ports mappings for each emx adapter. Note that this file does not reflect current connectivity, as devices may not be present, but their Target Id mappings will continue to persist.