]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/scsi/scsi_host.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
[linux-2.6-omap-h63xx.git] / include / scsi / scsi_host.h
index de6ce541a046c551b065fa6737b949c4bee6fff2..39c6f8cc20c3c7984484d0ee5f57d3e5e1fd7646 100644 (file)
@@ -16,6 +16,7 @@ struct scsi_target;
 struct Scsi_Host;
 struct scsi_host_cmd_pool;
 struct scsi_transport_template;
+struct blk_queue_tags;
 
 
 /*
@@ -465,6 +466,12 @@ struct Scsi_Host {
        struct scsi_host_template *hostt;
        struct scsi_transport_template *transportt;
 
+       /*
+        * area to keep a shared tag map (if needed, will be
+        * NULL if not)
+        */
+       struct blk_queue_tag    *bqt;
+
        /*
         * The following two fields are protected with host_lock;
         * however, eh routines can safely access during eh processing
@@ -472,6 +479,7 @@ 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 */
@@ -541,6 +549,9 @@ 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
         */
@@ -618,7 +629,8 @@ 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->shost_state == SHOST_DEL_RECOVERY ||
+               shost->tmf_in_progress;
 }
 
 extern int scsi_queue_work(struct Scsi_Host *, struct work_struct *);