diff options
author | Christof Schmitt <christof.schmitt@de.ibm.com> | 2009-03-02 07:09:00 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-03-12 13:58:19 -0400 |
commit | 63caf367e1c92e0667a344d9b687c04e6ef054b5 (patch) | |
tree | a6697048cb7f82b23648a5b2631c052d540ad709 /drivers/s390/scsi/zfcp_ext.h | |
parent | 92cab0d93a1107ad7f6d827fde62d1aa4db15e86 (diff) |
[SCSI] zfcp: Improve reliability of SCSI eh handlers in zfcp
When the SCSI midlayer is running error recovery, the low-level error
recovery in zfcp could be running and preventing the SCSI midlayer to
issue error recovery requests. To avoid unnecessary error recovery
escalation, wait for the zfcp erp to finish and retry if necessary.
While reworking the SCSI eh handlers, alsa cleanup the code and
simplify the interface from zfcp_scsi to the fsf layer.
Acked-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_ext.h')
-rw-r--r-- | drivers/s390/scsi/zfcp_ext.h | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h index b5adeda93e1d..799ce1db1f56 100644 --- a/drivers/s390/scsi/zfcp_ext.h +++ b/drivers/s390/scsi/zfcp_ext.h | |||
@@ -125,16 +125,13 @@ extern int zfcp_status_read_refill(struct zfcp_adapter *adapter); | |||
125 | extern int zfcp_fsf_send_ct(struct zfcp_send_ct *, mempool_t *, | 125 | extern int zfcp_fsf_send_ct(struct zfcp_send_ct *, mempool_t *, |
126 | struct zfcp_erp_action *); | 126 | struct zfcp_erp_action *); |
127 | extern int zfcp_fsf_send_els(struct zfcp_send_els *); | 127 | extern int zfcp_fsf_send_els(struct zfcp_send_els *); |
128 | extern int zfcp_fsf_send_fcp_command_task(struct zfcp_adapter *, | 128 | extern int zfcp_fsf_send_fcp_command_task(struct zfcp_unit *, |
129 | struct zfcp_unit *, | 129 | struct scsi_cmnd *); |
130 | struct scsi_cmnd *, int, int); | ||
131 | extern void zfcp_fsf_req_complete(struct zfcp_fsf_req *); | 130 | extern void zfcp_fsf_req_complete(struct zfcp_fsf_req *); |
132 | extern void zfcp_fsf_req_free(struct zfcp_fsf_req *); | 131 | extern void zfcp_fsf_req_free(struct zfcp_fsf_req *); |
133 | extern struct zfcp_fsf_req *zfcp_fsf_send_fcp_ctm(struct zfcp_adapter *, | 132 | extern struct zfcp_fsf_req *zfcp_fsf_send_fcp_ctm(struct zfcp_unit *, u8); |
134 | struct zfcp_unit *, u8, int); | ||
135 | extern struct zfcp_fsf_req *zfcp_fsf_abort_fcp_command(unsigned long, | 133 | extern struct zfcp_fsf_req *zfcp_fsf_abort_fcp_command(unsigned long, |
136 | struct zfcp_adapter *, | 134 | struct zfcp_unit *); |
137 | struct zfcp_unit *, int); | ||
138 | 135 | ||
139 | /* zfcp_qdio.c */ | 136 | /* zfcp_qdio.c */ |
140 | extern int zfcp_qdio_allocate(struct zfcp_adapter *); | 137 | extern int zfcp_qdio_allocate(struct zfcp_adapter *); |