• Robert Jennings's avatar
    [SCSI] ibmvscsi: requeue while CRQ closed · 860784c8
    Robert Jennings authored
    CRQ send errors that return with H_CLOSED should return with
    SCSI_MLQUEUE_HOST_BUSY until firmware alerts the client of a CRQ
    transport event.  The transport event will either reinitialize and
    requeue the requests or fail and return IO with DID_ERROR.
    
    To avoid failing the eh_* functions while re-attaching to the server
    adapter this will retry for a period of time while ibmvscsi_send_srp_event
    returns SCSI_MLQUEUE_HOST_BUSY.
    
    In ibmvscsi_eh_abort_handler() the loop includes the search of the
    event list.  The lock on the hostdata is dropped while waiting to try
    again after failing ibmvscsi_send_srp_event.  The event could have been
    purged if a login was in progress when the function was called.
    
    In ibmvscsi_eh_device_reset_handler() the loop includes the call to
    get_event_struct() because a failing call to ibmvscsi_send_srp_event()
    will have freed the event struct.
    Signed-off-by: default avatarRobert Jennings <rcj@linux.vnet.ibm.com>
    Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    860784c8
ibmvscsi.c 51.5 KB