aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_def.h
diff options
context:
space:
mode:
authorSwen Schillig <swen@vnet.ibm.com>2008-05-19 06:17:37 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-06-05 10:27:13 -0400
commitd26ab06ede83287f99067fee3034c5455a75faf9 (patch)
tree6070ae50cded8086ceab61092348790b39876146 /drivers/s390/scsi/zfcp_def.h
parent15424921222f2bed0aa92ef1e8bc94f753d2c6ea (diff)
[SCSI] zfcp: receiving an unsolicted status can lead to I/O stall
Processing of an unsolicted status request can lead to a locking race of the request_queue's queue_lock during the recreation of the used up status read request while still in interrupt context of the response handler. Detaching the 'refill' of the long running status read requests from the handler to a scheduled work is solving this issue. In addition, each refill-run is trying to re-establish the full amount of status read requests, which might have failed in earlier runs. Signed-off-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/s390/scsi/zfcp_def.h')
-rw-r--r--drivers/s390/scsi/zfcp_def.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h
index 306fcd0cae31..adfbbb07448a 100644
--- a/drivers/s390/scsi/zfcp_def.h
+++ b/drivers/s390/scsi/zfcp_def.h
@@ -136,7 +136,6 @@ zfcp_address_to_sg(void *address, struct scatterlist *list, unsigned int size)
136#define ZFCP_QTCB_VERSION FSF_QTCB_CURRENT_VERSION 136#define ZFCP_QTCB_VERSION FSF_QTCB_CURRENT_VERSION
137/* ATTENTION: value must not be used by hardware */ 137/* ATTENTION: value must not be used by hardware */
138#define FSF_QTCB_UNSOLICITED_STATUS 0x6305 138#define FSF_QTCB_UNSOLICITED_STATUS 0x6305
139#define ZFCP_STATUS_READ_FAILED_THRESHOLD 3
140#define ZFCP_STATUS_READS_RECOM FSF_STATUS_READS_RECOM 139#define ZFCP_STATUS_READS_RECOM FSF_STATUS_READS_RECOM
141 140
142/* Do 1st retry in 1 second, then double the timeout for each following retry */ 141/* Do 1st retry in 1 second, then double the timeout for each following retry */
@@ -759,7 +758,8 @@ struct zfcp_adapter {
759 rwlock_t abort_lock; /* Protects against SCSI 758 rwlock_t abort_lock; /* Protects against SCSI
760 stack abort/command 759 stack abort/command
761 completion races */ 760 completion races */
762 u16 status_read_failed; /* # failed status reads */ 761 atomic_t stat_miss; /* # missing status reads*/
762 struct work_struct stat_work;
763 atomic_t status; /* status of this adapter */ 763 atomic_t status; /* status of this adapter */
764 struct list_head erp_ready_head; /* error recovery for this 764 struct list_head erp_ready_head; /* error recovery for this
765 adapter/devices */ 765 adapter/devices */