Merge branch 'for-2.6.38/drivers' of git://git.kernel.dk/linux-2.6-block
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Jan 2011 18:50:24 +0000 (10:50 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Jan 2011 18:50:24 +0000 (10:50 -0800)
* 'for-2.6.38/drivers' of git://git.kernel.dk/linux-2.6-block:
  cciss: reinstate proper FIFO order of command queue list
  floppy: replace NO_GEOM macro with a function

drivers/block/cciss.c
drivers/block/cciss.h
drivers/block/cciss_cmd.h
drivers/block/floppy.c

index 8e0f9256eb5829102b47977ea489e6e03b205fde..516d5bbec2b6fc5c78884a1d58c44ae4fc0b73f6 100644 (file)
@@ -238,9 +238,9 @@ static void set_performant_mode(ctlr_info_t *h, CommandList_struct *c)
 /*
  * Enqueuing and dequeuing functions for cmdlists.
  */
-static inline void addQ(struct hlist_head *list, CommandList_struct *c)
+static inline void addQ(struct list_head *list, CommandList_struct *c)
 {
-       hlist_add_head(&c->list, list);
+       list_add_tail(&c->list, list);
 }
 
 static inline void removeQ(CommandList_struct *c)
@@ -253,12 +253,12 @@ static inline void removeQ(CommandList_struct *c)
         * them off as 'stale' to prevent the driver from
         * falling over.
         */
-       if (WARN_ON(hlist_unhashed(&c->list))) {
+       if (WARN_ON(list_empty(&c->list))) {
                c->cmd_type = CMD_MSG_STALE;
                return;
        }
 
-       hlist_del_init(&c->list);
+       list_del_init(&c->list);
 }
 
 static void enqueue_cmd_and_start_io(ctlr_info_t *h,
@@ -905,7 +905,7 @@ static CommandList_struct *cmd_alloc(ctlr_info_t *h)
 
        c->cmdindex = i;
 
-       INIT_HLIST_NODE(&c->list);
+       INIT_LIST_HEAD(&c->list);
        c->busaddr = (__u32) cmd_dma_handle;
        temp64.val = (__u64) err_dma_handle;
        c->ErrDesc.Addr.lower = temp64.val32.lower;
@@ -944,7 +944,7 @@ static CommandList_struct *cmd_special_alloc(ctlr_info_t *h)
        }
        memset(c->err_info, 0, sizeof(ErrorInfo_struct));
 
-       INIT_HLIST_NODE(&c->list);
+       INIT_LIST_HEAD(&c->list);
        c->busaddr = (__u32) cmd_dma_handle;
        temp64.val = (__u64) err_dma_handle;
        c->ErrDesc.Addr.lower = temp64.val32.lower;
@@ -2888,8 +2888,8 @@ static void start_io(ctlr_info_t *h)
 {
        CommandList_struct *c;
 
-       while (!hlist_empty(&h->reqQ)) {
-               c = hlist_entry(h->reqQ.first, CommandList_struct, list);
+       while (!list_empty(&h->reqQ)) {
+               c = list_entry(h->reqQ.next, CommandList_struct, list);
                /* can't do anything if fifo is full */
                if ((h->access.fifo_full(h))) {
                        dev_warn(&h->pdev->dev, "fifo full\n");
@@ -3402,11 +3402,10 @@ static inline u32 process_nonindexed_cmd(ctlr_info_t *h, u32 raw_tag)
 {
        u32 tag;
        CommandList_struct *c = NULL;
-       struct hlist_node *tmp;
        __u32 busaddr_masked, tag_masked;
 
        tag = cciss_tag_discard_error_bits(raw_tag);
-       hlist_for_each_entry(c, tmp, &h->cmpQ, list) {
+       list_for_each_entry(c, &h->cmpQ, list) {
                busaddr_masked = cciss_tag_discard_error_bits(c->busaddr);
                tag_masked = cciss_tag_discard_error_bits(tag);
                if (busaddr_masked == tag_masked) {
@@ -4572,8 +4571,8 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
        h = hba[i];
        h->pdev = pdev;
        h->busy_initializing = 1;
-       INIT_HLIST_HEAD(&h->cmpQ);
-       INIT_HLIST_HEAD(&h->reqQ);
+       INIT_LIST_HEAD(&h->cmpQ);
+       INIT_LIST_HEAD(&h->reqQ);
        mutex_init(&h->busy_shutting_down);
 
        if (cciss_pci_init(h) != 0)
index 4b8933d778f154169e191938d83c3b4115d291cc..579f7491849304cfc311ed9a9e46580013e116b7 100644 (file)
@@ -103,8 +103,8 @@ struct ctlr_info
        struct access_method access;
 
        /* queue and queue Info */ 
-       struct hlist_head reqQ;
-       struct hlist_head cmpQ;
+       struct list_head reqQ;
+       struct list_head cmpQ;
        unsigned int Qdepth;
        unsigned int maxQsinceinit;
        unsigned int maxSG;
index eb060f1b00b67fd6d8bed28722593710d3d8c0bf..35463d2f0ee7ce71d80943105f1594eb556141d4 100644 (file)
@@ -195,7 +195,7 @@ typedef struct _CommandList_struct {
   int                     ctlr;
   int                     cmd_type; 
   long                    cmdindex;
-  struct hlist_node list;
+  struct list_head list;
   struct request *        rq;
   struct completion *waiting;
   int   retry_count;
index 25e4dffa0aad6c373135c73841b5f55ad5082df9..b9ba04fc2b34eb0845cf0c724b64151e53b05c65 100644 (file)
@@ -597,6 +597,11 @@ static unsigned char fsector_t;    /* sector in track */
 static unsigned char in_sector_offset; /* offset within physical sector,
                                         * expressed in units of 512 bytes */
 
+static inline bool drive_no_geom(int drive)
+{
+       return !current_type[drive] && !ITYPE(UDRS->fd_device);
+}
+
 #ifndef fd_eject
 static inline int fd_eject(int drive)
 {
@@ -3782,7 +3787,7 @@ static int check_floppy_change(struct gendisk *disk)
        if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags) ||
            test_bit(FD_VERIFY_BIT, &UDRS->flags) ||
            test_bit(drive, &fake_change) ||
-           (!ITYPE(UDRS->fd_device) && !current_type[drive]))
+           drive_no_geom(drive))
                return 1;
        return 0;
 }
@@ -3848,13 +3853,13 @@ static int __floppy_read_block_0(struct block_device *bdev)
 static int floppy_revalidate(struct gendisk *disk)
 {
        int drive = (long)disk->private_data;
-#define NO_GEOM (!current_type[drive] && !ITYPE(UDRS->fd_device))
        int cf;
        int res = 0;
 
        if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags) ||
            test_bit(FD_VERIFY_BIT, &UDRS->flags) ||
-           test_bit(drive, &fake_change) || NO_GEOM) {
+           test_bit(drive, &fake_change) ||
+           drive_no_geom(drive)) {
                if (WARN(atomic_read(&usage_count) == 0,
                         "VFS: revalidate called on non-open device.\n"))
                        return -EFAULT;
@@ -3862,7 +3867,7 @@ static int floppy_revalidate(struct gendisk *disk)
                lock_fdc(drive, false);
                cf = (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags) ||
                      test_bit(FD_VERIFY_BIT, &UDRS->flags));
-               if (!(cf || test_bit(drive, &fake_change) || NO_GEOM)) {
+               if (!(cf || test_bit(drive, &fake_change) || drive_no_geom(drive))) {
                        process_fd_request();   /*already done by another thread */
                        return 0;
                }
@@ -3874,7 +3879,7 @@ static int floppy_revalidate(struct gendisk *disk)
                clear_bit(FD_DISK_CHANGED_BIT, &UDRS->flags);
                if (cf)
                        UDRS->generation++;
-               if (NO_GEOM) {
+               if (drive_no_geom(drive)) {
                        /* auto-sensing */
                        res = __floppy_read_block_0(opened_bdev[drive]);
                } else {