scsi: remove eh_timed_out methods in the transport template
Instead define the timeout behavior purely based on the host_template eh_timed_out method and wire up the existing transport implementations in the host templates. This also clears up the confusion that the transport template method overrides the host template one, so some drivers have to re-override the transport template one. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:

committed by
Martin K. Petersen

parent
28917d40e6
commit
b6a05c823f
@@ -383,6 +383,7 @@ extern int iscsi_eh_recover_target(struct scsi_cmnd *sc);
|
||||
extern int iscsi_eh_session_reset(struct scsi_cmnd *sc);
|
||||
extern int iscsi_eh_device_reset(struct scsi_cmnd *sc);
|
||||
extern int iscsi_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *sc);
|
||||
extern enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc);
|
||||
|
||||
/*
|
||||
* iSCSI host helpers.
|
||||
|
@@ -57,17 +57,6 @@ struct scsi_transport_template {
|
||||
*/
|
||||
void (* eh_strategy_handler)(struct Scsi_Host *);
|
||||
|
||||
/*
|
||||
* This is an optional routine that allows the transport to become
|
||||
* involved when a scsi io timer fires. The return value tells the
|
||||
* timer routine how to finish the io timeout handling:
|
||||
* EH_HANDLED: I fixed the error, please complete the command
|
||||
* EH_RESET_TIMER: I need more time, reset the timer and
|
||||
* begin counting again
|
||||
* EH_NOT_HANDLED Begin normal error recovery
|
||||
*/
|
||||
enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
|
||||
|
||||
/*
|
||||
* Used as callback for the completion of i_t_nexus request
|
||||
* for target drivers.
|
||||
|
@@ -808,6 +808,7 @@ struct fc_vport *fc_vport_create(struct Scsi_Host *shost, int channel,
|
||||
struct fc_vport_identifiers *);
|
||||
int fc_vport_terminate(struct fc_vport *vport);
|
||||
int fc_block_scsi_eh(struct scsi_cmnd *cmnd);
|
||||
enum blk_eh_timer_return fc_eh_timed_out(struct scsi_cmnd *scmd);
|
||||
|
||||
static inline struct Scsi_Host *fc_bsg_to_shost(struct bsg_job *job)
|
||||
{
|
||||
|
@@ -124,6 +124,7 @@ extern int srp_reconnect_rport(struct srp_rport *rport);
|
||||
extern void srp_start_tl_fail_timers(struct srp_rport *rport);
|
||||
extern void srp_remove_host(struct Scsi_Host *);
|
||||
extern void srp_stop_rport_timers(struct srp_rport *rport);
|
||||
enum blk_eh_timer_return srp_timed_out(struct scsi_cmnd *scmd);
|
||||
|
||||
/**
|
||||
* srp_chkready() - evaluate the transport layer state before I/O
|
||||
|
Reference in New Issue
Block a user