This case looks pretty good, but I've a few questions: 1) Can you describe why tape devices need this? Many reviewers won't be familiar with the motivation behind TLR. A description of how TLR affects the behavior of the devices (beyond just the negotiation phase, which you have adequately described) would be useful.
2) As I'm not one of the people familiar with TLR, I'd like to better understand what this does to failure modes. Specifically, what does TLR do when a SCSI error is encountered? Can it lead to an "interminable" hang-like condition where the transport driver continues retrying a failed SCSI command indefinitely? 3) Does the above have any ramifications for FMA? Sorry if I'm asking for information that seems obvious, but I don't want to have to grunge through the specifications for SAS to find the answers.... -- Garrett Frank Che wrote: > I'm sponsoring this case for Jianfei Wang. The timer is set for > 09/02/2009. > > -Frank. > > 1. Introduction > 1.1. Project/Component Working Name: > Transport Layer Retries (TLR) Support > > 1.2. Name of Document Author/Supplier: > Author: Jianfei Wang > > 1.3. Date of This Document: > 08/24/2009 > > 4. Technical Description: > > 4.1. Summary > > This project is to provide TLR (Transport Layer Retries) support > in Solaris so that tape drive devices could be better supported. > > Requested release binding is Patch/Micro. > > 4.2. Details > > To support Transport Layer Retries(TLR), a new SCSI transport > capability, SCSI_CAP_TRAN_LAYER_RETRIES, will be added. > HBA drivers need TLR support should be updated to know this > capability. > The storage target driver should also be updated to coordinate > the TLR support. > > When a new tape drive device is detected, the target driver checks > the HBA's capability of TLR support with the scsi_ifgetcap(9F) > interface > in the attach(9E) entry point. > > The target driver reads Vital Product Data (VPD) page 0x90 to > get the target device type. If VPD page 0x90 exists, the target > device > type is SAS2; otherwise the target device type is SAS1. > > If the HBA supports TLR and the target device is a SAS1 device, > then the > target driver uses SCSI command MODE_SENSE and MODE_SELECT to set > the > mode page (Protocol-Specific Logical Unit mode page)'s TLR flag. > If set > successfully, Initiator_Target_Lun nexus support TLR property. > Because > the mode page is not persistent, the TLR flag bit will be lost > when the > target device do a hard reset. So the target driver needs to set > the mode > page's TLR flag each time the target device completes hard reset. > > If the HBA supports TLR and the target device is SAS2 device, > then the > target driver issues InquiryVPD to get the capability of the tape > device > to check whether the target device is able to support TLR. If > both the > HBA driver and the tape device support TLR, the target driver > will send a > commands packet with a special pkg_flag, FLAG_TLR, to notify > the HBA driver to set TLR in control bit before transportation. > If the > Initiator_Target_Lun nexus does not support TLR, commands from > the target > driver to the HBA driver would fail and the pkt_reason will be > set to > CMD_TLR_OFF. When the target driver get this reason, it will turn > off > the TLR control. > > 4.3. Exported Interfaces > > Interface Commitment Comments > ============= ========== ===================== > SCSI_CAP_TRAN_LAYER_RETRIES Committed SCSI TLR capability > tran-layer-retries Committed SCSI_CAP_ASCII content > FLAG_TLR Committed pkg_flag indicating > TLR is supported > CMD_TLR_OFF Committed pkt_reason > indicating TLR is not supported > > 4.4. Bug/RFE Number(s) > 6647764 - Solaris storage driver Transport Layer Retries (TLR) > support > > 4.5. References > Serial Attached SCSI - 1.1 (SAS-1.1) > Serial Attached SCSI - 2 (SAS-2) > SCSI Primary Commands - 4 (SPC-4) > http://www.t10.org/ > > 4.6. Manpage changes > scsi_hba_lookup_capstr.diff > ============================ > 156a157 > > SCSI_CAP_TRAN_LAYER_RETRIES > 157a159,161 > > "tran-layer-retries" > > scsi_ifgetcap.diff > =========================== > 126a127,128 > > tran-layer-retries Transport Layer retries is support by > > the host adapter: 0 disables, 1 > enables. > > scsi_pkt.diff > =========================== > 226a227,230 > > FLAG_TLR Run command with Transport > > Layer Retries support > > > 323a328,330 > > CMD_TLR_OFF Transport Layer Retries turn off > > > > 6. Resources and Schedule: > 6.4. Steering Committee requested information > 6.4.1. Consolidation C-team Name: > ON > 6.5. ARC review type: Fast Track > 6.6. ARC Exposure: Open > > >