I am sponsoring the following fasttrack for Javen Wu with a timeout of
05/28/2008. It introduces a new 'add_drv -c' driver class for scsi(4)
SCSA HBA drivers that support self-identifying children. The proposed
release binding is micro/patch. Additional referenced material is in
the case directory.
-Chris
Template Version: @(#)sac_nextcase 1.66 04/17/08 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
scsi-self-identifying
1.2. Name of Document Author/Supplier:
Author: Javen Wu
1.3 Date of This Document:
20 May, 2008
4. Technical Description
4.1 Summary
To perform devid discovery from scratch, the IO framework needs to
be able to identify 'sticks' of the device tree where the
configuration of the stick might result in the registration of
devids. The 'ddi-devid-registrant' [1] property names the leaf
drivers that might generate devids, and stub nodes defined in the
leaf driver.conf file identify HBAs that might have children that
bind to the driver. These two things together allow the IO
framework to identify 'all sticks' to configure when trying to
discover the paths to a device with a particular devid. Accurate
'all sticks' information is important when more efficient
devid-path discovery methods, like [2], fail.
Recently, there are more and more self-identifying SCSI HBA
drivers, as defined by [3], which are not of class=scsi. Currently,
we have to add parent="<driver-name>" to the leaf driver.conf files
(sd/ssd) for every self-identifying HBA driver. This
parent="<driver-name>" technique causes cross-driver pollution in
the .conf files of leaf drivers (causing issues with things like
driver class-action scripts). Also, people are forgetting that they
need to do this to ensure proper devid discovery.
So far, we have a lot of HBA drivers that add specific 'stub'
configuration nodes (with parent="<driver_name>") to the leaf
driver.conf files. The examples are the following 'stub' nodes in
sd.conf file and ssd.conf file:
sd.conf:(i386)
name="sd" parent="nv_sata";
name="sd" parent="ahci";
name="sd" parent="si3124";
name="sd" parent="marvell88sx";
ssd.conf:(sparc)
name="ssd" parent="sf" target=0;
name="ssd" parent="fp" target=0;
name="ssd" parent="scsi_vhci" target=0;
Currently, more pollution occurs each time we add a
self-identifying HBA driver to Solaris.
As a solution, this case proposes the introduction of a new class
(ala /etc/driver_classes) called 'scsi-self-identifying'. With this
change, all SCSA self-identifying HBA drivers will be part of the
new class, with a single generic "parent=scsi-self-identifying"
stub node in the leaf .conf files.
4.2 Proposal
The proposed new driver class 'scsi-self-identifying' can be
resisted by self-identifying SCSI HBA drivers during add_drv(1M) or
BFU/upgrade.
At the same time, a generic 'stub' node will be added into
sd.conf/ssd.conf instead of the 'stub' nodes only with parent
property like below:
sd.conf (both x86 and sparc)
name="sd" class="scsi-self-identifying";
ssd.conf
name="ssd" class="scsi-self-identifying";
4.3 Interface Summary
Interface Level Comments
-------------------------------------------------------------------------
scsi-self-identifying Committed driver class to indicate a
SCSA compliant nexus driver
which is not of class=scsi and
is able to dynamically create
self-identifying scsi(4) device
children.
4.4 References
[1] PSARC/2007/477 Drivers Registering Devids
<http://sac.sfbay/PSARC/2007/477>
<http://www.opensolaris.org/os/community/arc/caselog/2007/447>
[2] PSARC/2004/064 Devid Cache
<http://sac.sfbay/PSARC/2004/064/>
<http://www.opensolaris.org/os/community/arc/caselog/2004/064>
[3] PSARC/2004/116 SCSI target compatible property
<http://sac.sfbay/PSARC/2004/116/>
<http://www.opensolaris.org/os/community/arc/caselog/2004/116>
[4] Manpage of scsi(4)
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
ON
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open