uint32_t ratov_j;
        struct qla_qpair *qpair;
        unsigned long flags;
+       int fast_fail_status = SUCCESS;
 
        if (qla2x00_isp_reg_stat(ha)) {
                ql_log(ql_log_info, vha, 0x8042,
                return FAILED;
        }
 
+       /* Save any FAST_IO_FAIL value to return later if abort succeeds */
        ret = fc_block_scsi_eh(cmd);
        if (ret != 0)
-               return ret;
+               fast_fail_status = ret;
 
        sp = scsi_cmd_priv(cmd);
        qpair = sp->qpair;
        vha->cmd_timeout_cnt++;
 
        if ((sp->fcport && sp->fcport->deleted) || !qpair)
-               return SUCCESS;
+               return fast_fail_status != SUCCESS ? fast_fail_status : FAILED;
 
        spin_lock_irqsave(qpair->qp_lock_ptr, flags);
        sp->comp = ∁
                            __func__, ha->r_a_tov/10);
                        ret = FAILED;
                } else {
-                       ret = SUCCESS;
+                       ret = fast_fail_status;
                }
                break;
        default: