The architecture of the Solaris SCSI subsystem distinguishes two types of device drivers: SCSI target drivers, and SCSI host adapter drivers. Target drivers like sd(7D) and st(7D) on SPARC and cmdk(7D) on x86 manage the device on the other end of the SCSI bus. Host adapter drivers manage the SCSI bus on behalf of all the devices that share it.
Drivers for host adapters provide a common set of interfaces for target drivers. These interfaces comprise the Sun Common SCSI Architecture (SCSA) which are documented as part of the Solaris DDI/DKI. See scsi_ifgetcap(9F) , scsi_init_pkt(9F) , and scsi_transport(9F) for further details of these, and associated routines.
Target drivers for SCSI devices should use a driver configuration file to enable them to be recognized by the system.
Configuration files for SCSI target drivers should identify the host adapter driver implicitly using the class keyword to remove any dependency on the particular host adapter involved.
All host adapter drivers of class scsi recognise the following properties:
All SCSI target drivers must provide target and lun properties. These properties are used to construct the address part of the device name under /devices.
Here is a configuration file for a SCSI target driver called toaster.conf.
# # Copyright (c) 1992, by Sun Microsystems, Inc. # #ident "@(#)toaster.conf 1.2 92/05/12 SMI" name="toaster" class="scsi" target=4 lun=0;
ANSI Small Computer System Interface-2 (SCSI-2)
You need to ensure that the target and lun values claimed by your target driver do not conflict with existing target drivers on the system. For example, on SPARC, if the target is a direct access device, the standard sd.conf file will usually make sd claim it before any other driver has a chance to probe it. This is also true for x86; if the target is a direct access device, the standard cmdk.conf file will usually make cmdk claim it before any other driver has a chance to probe it.