aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi/libfc.h
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2016-10-13 15:10:50 +0200
committerMartin K. Petersen <martin.petersen@oracle.com>2016-11-08 17:29:52 -0500
commit9ca1e182b9d1ef3f97718c4072a18a23dc47d4f9 (patch)
tree8931ec7605a437d59eb6e7edaff18d4cf031b01b /include/scsi/libfc.h
parentscsi: libfc: safeguard against invalid exchange index (diff)
downloadlinux-dev-9ca1e182b9d1ef3f97718c4072a18a23dc47d4f9.tar.xz
linux-dev-9ca1e182b9d1ef3f97718c4072a18a23dc47d4f9.zip
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>
Diffstat (limited to 'include/scsi/libfc.h')
-rw-r--r--include/scsi/libfc.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
index dc42d8070f6f..8cb752f8d12b 100644
--- a/include/scsi/libfc.h
+++ b/include/scsi/libfc.h
@@ -390,6 +390,7 @@ struct fc_seq {
#define FC_EX_DONE (1 << 0) /* ep is completed */
#define FC_EX_RST_CLEANUP (1 << 1) /* reset is forcing completion */
+#define FC_EX_QUARANTINE (1 << 2) /* exch is quarantined */
/**
* struct fc_exch - Fibre Channel Exchange