[SCSI] lpfc 8.3.38: Fixed OXID reuse issue.
Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Родитель
25aee4070a
Коммит
e5771b4dc0
|
@ -2306,7 +2306,13 @@ int lpfc_enable_rrq;
|
||||||
module_param(lpfc_enable_rrq, int, S_IRUGO);
|
module_param(lpfc_enable_rrq, int, S_IRUGO);
|
||||||
MODULE_PARM_DESC(lpfc_enable_rrq, "Enable RRQ functionality");
|
MODULE_PARM_DESC(lpfc_enable_rrq, "Enable RRQ functionality");
|
||||||
lpfc_param_show(enable_rrq);
|
lpfc_param_show(enable_rrq);
|
||||||
lpfc_param_init(enable_rrq, 0, 0, 1);
|
/*
|
||||||
|
# lpfc_enable_rrq: Track XRI/OXID reuse after IO failures
|
||||||
|
# 0x0 = disabled, XRI/OXID use not tracked.
|
||||||
|
# 0x1 = XRI/OXID reuse is timed with ratov, RRQ sent.
|
||||||
|
# 0x2 = XRI/OXID reuse is timed with ratov, No RRQ sent.
|
||||||
|
*/
|
||||||
|
lpfc_param_init(enable_rrq, 2, 0, 2);
|
||||||
static DEVICE_ATTR(lpfc_enable_rrq, S_IRUGO, lpfc_enable_rrq_show, NULL);
|
static DEVICE_ATTR(lpfc_enable_rrq, S_IRUGO, lpfc_enable_rrq_show, NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -872,14 +872,16 @@ lpfc_set_rrq_active(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp,
|
||||||
xritag, rxid, ndlp->nlp_DID, send_rrq);
|
xritag, rxid, ndlp->nlp_DID, send_rrq);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
rrq->send_rrq = send_rrq;
|
if (phba->cfg_enable_rrq == 1)
|
||||||
|
rrq->send_rrq = send_rrq;
|
||||||
|
else
|
||||||
|
rrq->send_rrq = 0;
|
||||||
rrq->xritag = xritag;
|
rrq->xritag = xritag;
|
||||||
rrq->rrq_stop_time = jiffies + HZ * (phba->fc_ratov + 1);
|
rrq->rrq_stop_time = jiffies + HZ * (phba->fc_ratov + 1);
|
||||||
rrq->ndlp = ndlp;
|
rrq->ndlp = ndlp;
|
||||||
rrq->nlp_DID = ndlp->nlp_DID;
|
rrq->nlp_DID = ndlp->nlp_DID;
|
||||||
rrq->vport = ndlp->vport;
|
rrq->vport = ndlp->vport;
|
||||||
rrq->rxid = rxid;
|
rrq->rxid = rxid;
|
||||||
rrq->send_rrq = send_rrq;
|
|
||||||
spin_lock_irqsave(&phba->hbalock, iflags);
|
spin_lock_irqsave(&phba->hbalock, iflags);
|
||||||
empty = list_empty(&phba->active_rrq_list);
|
empty = list_empty(&phba->active_rrq_list);
|
||||||
list_add_tail(&rrq->list, &phba->active_rrq_list);
|
list_add_tail(&rrq->list, &phba->active_rrq_list);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче