• Michael Reed's avatar
    [SCSI] fusion mpt: fix target missing after resetting external raid · 7ba2db5f
    Michael Reed authored
    Following a hard reset of a SAS raid, one of the raid targets is occasionally
    missing.  I tracked this down to a pretty obscure little bug.
    
    The LSI fusion drivers for SAS and Fibre Channel both use their respective
    transport layers.  Those transport layers increment the target number
    assigned to new targets.
    
    The routine __scsi_scan_target uses the "this_id" element of the Scsi_Host
    structure to avoid scanning the scsi host adapter.  Both fusion drivers set
    "this_id" from a value returned in a firmware PortFacts response.  For my
    particular test case (SAS) the firmware id assigned to the initiator was
    173.  After enough raid resets to cause the raid targets to go and come a
    sufficient number of times, the id assigned by the transport to a raid
    target would match the id assigned by the host adapter to the "this_id"
    field, resulting in that target not being scanned.
    
    Fix by not assigning this_id and not checking it in slave_configure. 
    Signed-off-by: default avatarMichael Reed <mdr@sgi.com>
    Acked-by: default avatar"Moore, Eric" <Eric.Moore@lsi.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    7ba2db5f
mptfc.c 41.7 KB