Skip to content

Commit c0a50cd

Browse files
hreineckemartinkpetersen
authored andcommitted
scsi: lpfc: Return DID_TRANSPORT_DISRUPTED instead of DID_REQUEUE
When the driver hits an internal error condition returning DID_REQUEUE the I/O will be retried on the same ITL nexus. This will inhibit multipathing, resulting in endless retries even if the error could have been resolved by using a different ITL nexus. Return DID_TRANSPORT_DISRUPTED to allow for multipath to engage and route I/O to another ITL nexus. Link: https://lore.kernel.org/r/[email protected] Reviewed-by: James Smart <[email protected]> Signed-off-by: Hannes Reinecke <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent 785538b commit c0a50cd

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/scsi/lpfc/lpfc_scsi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4272,7 +4272,7 @@ lpfc_fcp_io_cmd_wqe_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pwqeIn,
42724272
lpfc_cmd->result == IOERR_ABORT_REQUESTED ||
42734273
lpfc_cmd->result == IOERR_RPI_SUSPENDED ||
42744274
lpfc_cmd->result == IOERR_SLER_CMD_RCV_FAILURE) {
4275-
cmd->result = DID_REQUEUE << 16;
4275+
cmd->result = DID_TRANSPORT_DISRUPTED << 16;
42764276
break;
42774277
}
42784278
if ((lpfc_cmd->result == IOERR_RX_DMA_FAILED ||
@@ -4562,7 +4562,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
45624562
lpfc_cmd->result == IOERR_NO_RESOURCES ||
45634563
lpfc_cmd->result == IOERR_ABORT_REQUESTED ||
45644564
lpfc_cmd->result == IOERR_SLER_CMD_RCV_FAILURE) {
4565-
cmd->result = DID_REQUEUE << 16;
4565+
cmd->result = DID_TRANSPORT_DISRUPTED << 16;
45664566
break;
45674567
}
45684568
if ((lpfc_cmd->result == IOERR_RX_DMA_FAILED ||

0 commit comments

Comments
 (0)