scsi: libfc: quarantine timed out xids
authorHannes Reinecke <hare@suse.de>
Thu, 13 Oct 2016 13:10:50 +0000 (15:10 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 8 Nov 2016 22:29:52 +0000 (17:29 -0500)
commit9ca1e182b9d1ef3f97718c4072a18a23dc47d4f9
tree8931ec7605a437d59eb6e7edaff18d4cf031b01b
parentb73aa56ee91cd88a4977033cfd2a18d6b25dddde
scsi: libfc: quarantine timed out xids

When a sequence times out we have no idea what happened to the
frame. And we do not know if we will ever receive the frame.
Hence we cannot re-use the xid as we would risk data corruption
if the xid had been re-used and the timed out frame would be
received after that.
So we need to quarantine the xid until the lport is reset.
Yes, I know this will (eventually) deplete the xid pool.
But for now it's the safest method.

Signed-off-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/libfc/fc_exch.c
drivers/scsi/libfc/fc_fcp.c
include/scsi/libfc.h