Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / block / cciss.h
index 8fb1920..b24fc05 100644 (file)
@@ -13,8 +13,6 @@
 #define IO_OK          0
 #define IO_ERROR       1
 
-#define MAJOR_NR COMPAQ_CISS_MAJOR
-
 struct ctlr_info;
 typedef struct ctlr_info ctlr_info_t;
 
@@ -29,14 +27,29 @@ typedef struct _drive_info_struct
 {
        __u32   LunID;  
        int     usage_count;
+       struct request_queue *queue;
        sector_t nr_blocks;
        int     block_size;
        int     heads;
        int     sectors;
        int     cylinders;
-       int     raid_level;
+       int     raid_level; /* set to -1 to indicate that
+                            * the drive is not in use/configured
+                           */
+       int     busy_configuring; /*This is set when the drive is being removed
+                                  *to prevent it from being opened or it's queue
+                                  *from being started.
+                                 */
 } drive_info_struct;
 
+#ifdef CONFIG_CISS_SCSI_TAPE
+
+struct sendcmd_reject_list {
+       int ncompletions;
+       unsigned long *complete; /* array of NR_CMDS tags */
+};
+
+#endif
 struct ctlr_info 
 {
        int     ctlr;
@@ -50,7 +63,6 @@ struct ctlr_info
        unsigned long io_mem_addr;
        unsigned long io_mem_length;
        CfgTable_struct __iomem *cfgtable;
-       unsigned int intr;
        int     interrupts_enabled;
        int     major;
        int     max_commands;
@@ -59,6 +71,13 @@ struct ctlr_info
        int     num_luns;
        int     highest_lun;
        int     usage_count;  /* number of opens all all minor devices */
+#      define DOORBELL_INT     0
+#      define PERF_MODE_INT    1
+#      define SIMPLE_MODE_INT  2
+#      define MEMQ_MODE_INT    3
+       unsigned int intr[4];
+       unsigned int msix_vector;
+       unsigned int msi_vector;
 
        // information about each logical volume
        drive_info_struct drv[CISS_MAX_LUN];
@@ -72,7 +91,6 @@ struct ctlr_info
        unsigned int maxQsinceinit;
        unsigned int maxSG;
        spinlock_t lock;
-       struct request_queue *queue;
 
        //* pointers to command and error info pool */ 
        CommandList_struct      *cmd_pool;
@@ -83,6 +101,7 @@ struct ctlr_info
        int                     nr_allocs;
        int                     nr_frees; 
        int                     busy_configuring;
+       int                     busy_initializing;
 
        /* This element holds the zero based queue number of the last
         * queue to be started.  It is used for fairness.
@@ -93,7 +112,11 @@ struct ctlr_info
        struct gendisk   *gendisk[NWD];
 #ifdef CONFIG_CISS_SCSI_TAPE
        void *scsi_ctlr; /* ptr to structure containing scsi related stuff */
+       /* list of block side commands the scsi error handling sucked up */
+       /* and saved for later processing */
+       struct sendcmd_reject_list scsi_rejects;
 #endif
+       unsigned char alive;
 };
 
 /*  Defining the diffent access_menthods */
@@ -260,7 +283,7 @@ struct board_type {
        struct access_method *access;
 };
 
-#define CCISS_LOCK(i)  (hba[i]->queue->queue_lock)
+#define CCISS_LOCK(i)  (&hba[i]->lock)
 
 #endif /* CCISS_H */