mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-02 13:06:40 +07:00
scsi: qedf: Add bus_reset No-op.
We need to add a bus reset no-op as without it some of the LUNs attached to a vport may go offline when the error handler escalates to host reset due to not having a bus reset handler in the driver. What happens is we escalate to host reset which does a soft link down/link up to reset the adapter. However with multiple vports attached it's been observed that if the vports do log back into the target within 5 seconds, the SCSI layer offlines the devices most likely due to a TUR timing out to verify that the device is online. Adding a bus reset handler will cause the TUR to be sent after the bus reset handler where the devices will still be online if the bus reset is initiated by sg_reset (which is the case in the test that was failing). The bus reset will succeed and not needlessly bring the device offline/online. Signed-off-by: Chad Dupuis <chad.dupuis@cavium.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
5cf446d2aa
commit
b09fdc3aac
@ -628,6 +628,16 @@ static int qedf_eh_device_reset(struct scsi_cmnd *sc_cmd)
|
||||
return qedf_initiate_tmf(sc_cmd, FCP_TMF_LUN_RESET);
|
||||
}
|
||||
|
||||
static int qedf_eh_bus_reset(struct scsi_cmnd *sc_cmd)
|
||||
{
|
||||
QEDF_ERR(NULL, "BUS RESET Issued...\n");
|
||||
/*
|
||||
* Essentially a no-op but return SUCCESS to prevent
|
||||
* unnecessary escalation to the host reset handler.
|
||||
*/
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
void qedf_wait_for_upload(struct qedf_ctx *qedf)
|
||||
{
|
||||
while (1) {
|
||||
@ -705,6 +715,7 @@ static struct scsi_host_template qedf_host_template = {
|
||||
.eh_abort_handler = qedf_eh_abort,
|
||||
.eh_device_reset_handler = qedf_eh_device_reset, /* lun reset */
|
||||
.eh_target_reset_handler = qedf_eh_target_reset, /* target reset */
|
||||
.eh_bus_reset_handler = qedf_eh_bus_reset,
|
||||
.eh_host_reset_handler = qedf_eh_host_reset,
|
||||
.slave_configure = qedf_slave_configure,
|
||||
.dma_boundary = QED_HW_DMA_BOUNDARY,
|
||||
|
Loading…
Reference in New Issue
Block a user