[SCSI] libfc: Check if exchange is completed when receiving a sequence
When a sequence is received in response to an exchange we issued previously, we should check to see if the exchange has completed. If yes, the sequence should be discarded. Since the exchange might be still in the completion process, it should be untouched. Signed-off-by: Steve Ma <steve.ma@intel.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
Родитель
d5e6054a0a
Коммит
30121d14f5
|
@ -1159,6 +1159,10 @@ static void fc_exch_recv_seq_resp(struct fc_exch_mgr *mp, struct fc_frame *fp)
|
||||||
atomic_inc(&mp->stats.xid_not_found);
|
atomic_inc(&mp->stats.xid_not_found);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
if (ep->esb_stat & ESB_ST_COMPLETE) {
|
||||||
|
atomic_inc(&mp->stats.xid_not_found);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
if (ep->rxid == FC_XID_UNKNOWN)
|
if (ep->rxid == FC_XID_UNKNOWN)
|
||||||
ep->rxid = ntohs(fh->fh_rx_id);
|
ep->rxid = ntohs(fh->fh_rx_id);
|
||||||
if (ep->sid != 0 && ep->sid != ntoh24(fh->fh_d_id)) {
|
if (ep->sid != 0 && ep->sid != ntoh24(fh->fh_d_id)) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче