scsi: qla2xxx: flush IO on chip reset or sess delete
authorQuinn Tran <quinn.tran@cavium.com>
Fri, 25 Jan 2019 07:23:43 +0000 (23:23 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 6 Feb 2019 02:41:16 +0000 (21:41 -0500)
On Transmit respond in target mode, if the chip is already reset or the
session is already deleted, then advance the command to the free step.
There is no need to abort the command, because the chip has already flushed
it.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_target.c

index 764b6ed74cfc9acf7a3b6fccc1abc5df244eeb75..7f5b1156ea8c6919735a62cb45334535d7a8f26b 100644 (file)
@@ -3257,13 +3257,10 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type,
        unsigned long flags = 0;
        int res;
 
-       if (cmd->sess && cmd->sess->deleted) {
+       if (!qpair->fw_started || (cmd->reset_count != qpair->chip_reset) ||
+           (cmd->sess && cmd->sess->deleted)) {
                cmd->state = QLA_TGT_STATE_PROCESSED;
-               if (cmd->sess->logout_completed)
-                       /* no need to terminate. FW already freed exchange. */
-                       qlt_abort_cmd_on_host_reset(cmd->vha, cmd);
-               else
-                       qlt_send_term_exchange(qpair, cmd, &cmd->atio, 0, 0);
+               qlt_abort_cmd_on_host_reset(cmd->vha, cmd);
                return 0;
        }