linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / scsi / scsi_host.h
index b3dd90f..8279929 100644 (file)
@@ -140,11 +140,26 @@ struct scsi_host_template {
         *
         * Status: REQUIRED     (at least one of them)
         */
+       int (* eh_strategy_handler)(struct Scsi_Host *);
        int (* eh_abort_handler)(struct scsi_cmnd *);
        int (* eh_device_reset_handler)(struct scsi_cmnd *);
        int (* eh_bus_reset_handler)(struct scsi_cmnd *);
        int (* eh_host_reset_handler)(struct scsi_cmnd *);
 
+       /*
+        * This is an optional routine to notify the host that the scsi
+        * timer just fired.  The returns tell the timer routine what to
+        * do about this:
+        *
+        * 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
+        *
+        * Status: OPTIONAL
+        */
+       enum scsi_eh_timer_return (* eh_timed_out)(struct scsi_cmnd *);
+
        /*
         * Before the mid layer attempts to scan for a new device where none
         * currently exists, it will call this entry in your driver.  Should
@@ -285,7 +300,7 @@ struct scsi_host_template {
         * suspend support
         */
        int (*resume)(struct scsi_device *);
-       int (*suspend)(struct scsi_device *, pm_message_t state);
+       int (*suspend)(struct scsi_device *);
 
        /*
         * Name of proc directory
@@ -472,7 +487,6 @@ struct Scsi_Host {
         */
        unsigned int host_busy;            /* commands actually active on low-level */
        unsigned int host_failed;          /* commands that failed. */
-       unsigned int host_eh_scheduled;    /* EH scheduled without command */
     
        unsigned short host_no;  /* Used for IOCTL_GET_IDLUN, /proc/scsi et al. */
        int resetting; /* if set, it means that last_reset is a valid value */
@@ -542,9 +556,6 @@ struct Scsi_Host {
         */
        unsigned ordered_tag:1;
 
-       /* task mgmt function in progress */
-       unsigned tmf_in_progress:1;
-
        /*
         * Optional work queue to be utilized by the transport
         */
@@ -622,8 +633,7 @@ static inline int scsi_host_in_recovery(struct Scsi_Host *shost)
 {
        return shost->shost_state == SHOST_RECOVERY ||
                shost->shost_state == SHOST_CANCEL_RECOVERY ||
-               shost->shost_state == SHOST_DEL_RECOVERY ||
-               shost->tmf_in_progress;
+               shost->shost_state == SHOST_DEL_RECOVERY;
 }
 
 extern int scsi_queue_work(struct Scsi_Host *, struct work_struct *);