diff options
author | Hannes Reinecke <hare@suse.de> | 2016-10-13 15:10:50 +0200 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2016-11-08 17:29:52 -0500 |
commit | 9ca1e182b9d1ef3f97718c4072a18a23dc47d4f9 (patch) | |
tree | 8931ec7605a437d59eb6e7edaff18d4cf031b01b /include/scsi/libfc.h | |
parent | b73aa56ee91cd88a4977033cfd2a18d6b25dddde (diff) | |
download | linux-9ca1e182b9d1ef3f97718c4072a18a23dc47d4f9.tar.bz2 |
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.h | 1 |
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 |