mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 02:39:48 +00:00
lpfc: fix for handling unmapped ndlp in target reset handler
Fix for handling unmapped ndlp in target reset handler Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: Dick Kennedy <dick.kennedy@emulex.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
eb01656688
commit
8c50d25c0e
2 changed files with 14 additions and 2 deletions
|
@ -5339,7 +5339,13 @@ lpfc_target_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
if (status == FAILED) {
|
if (status == FAILED) {
|
||||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
||||||
"0722 Target Reset rport failure: rdata x%p\n", rdata);
|
"0722 Target Reset rport failure: rdata x%p\n", rdata);
|
||||||
return FAILED;
|
spin_lock_irq(shost->host_lock);
|
||||||
|
pnode->nlp_flag &= ~NLP_NPR_ADISC;
|
||||||
|
pnode->nlp_fcp_info &= ~NLP_FCP_2_DEVICE;
|
||||||
|
spin_unlock_irq(shost->host_lock);
|
||||||
|
lpfc_reset_flush_io_context(vport, tgt_id, lun_id,
|
||||||
|
LPFC_CTX_TGT);
|
||||||
|
return FAST_IO_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
scsi_event.event_type = FC_REG_SCSI_EVENT;
|
scsi_event.event_type = FC_REG_SCSI_EVENT;
|
||||||
|
|
|
@ -10132,7 +10132,9 @@ lpfc_sli_abort_taskmgmt(struct lpfc_vport *vport, struct lpfc_sli_ring *pring,
|
||||||
uint16_t tgt_id, uint64_t lun_id, lpfc_ctx_cmd cmd)
|
uint16_t tgt_id, uint64_t lun_id, lpfc_ctx_cmd cmd)
|
||||||
{
|
{
|
||||||
struct lpfc_hba *phba = vport->phba;
|
struct lpfc_hba *phba = vport->phba;
|
||||||
|
struct lpfc_scsi_buf *lpfc_cmd;
|
||||||
struct lpfc_iocbq *abtsiocbq;
|
struct lpfc_iocbq *abtsiocbq;
|
||||||
|
struct lpfc_nodelist *ndlp;
|
||||||
struct lpfc_iocbq *iocbq;
|
struct lpfc_iocbq *iocbq;
|
||||||
IOCB_t *icmd;
|
IOCB_t *icmd;
|
||||||
int sum, i, ret_val;
|
int sum, i, ret_val;
|
||||||
|
@ -10187,7 +10189,11 @@ lpfc_sli_abort_taskmgmt(struct lpfc_vport *vport, struct lpfc_sli_ring *pring,
|
||||||
if (iocbq->iocb_flag & LPFC_IO_FOF)
|
if (iocbq->iocb_flag & LPFC_IO_FOF)
|
||||||
abtsiocbq->iocb_flag |= LPFC_IO_FOF;
|
abtsiocbq->iocb_flag |= LPFC_IO_FOF;
|
||||||
|
|
||||||
if (lpfc_is_link_up(phba))
|
lpfc_cmd = container_of(iocbq, struct lpfc_scsi_buf, cur_iocbq);
|
||||||
|
ndlp = lpfc_cmd->rdata->pnode;
|
||||||
|
|
||||||
|
if (lpfc_is_link_up(phba) &&
|
||||||
|
(ndlp && ndlp->nlp_state == NLP_STE_MAPPED_NODE))
|
||||||
abtsiocbq->iocb.ulpCommand = CMD_ABORT_XRI_CN;
|
abtsiocbq->iocb.ulpCommand = CMD_ABORT_XRI_CN;
|
||||||
else
|
else
|
||||||
abtsiocbq->iocb.ulpCommand = CMD_CLOSE_XRI_CN;
|
abtsiocbq->iocb.ulpCommand = CMD_CLOSE_XRI_CN;
|
||||||
|
|
Loading…
Reference in a new issue