]> git.hungrycats.org Git - linux/commitdiff
Make block device initialization initialize the request queue
authorLinus Torvalds <torvalds@home.transmeta.com>
Sat, 31 Aug 2002 07:58:00 +0000 (00:58 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Sat, 31 Aug 2002 07:58:00 +0000 (00:58 -0700)
pointer before the device is opened.

This should finally fix the 2.5.x floppy driver.

fs/block_dev.c

index c0c57fe9e9b8a5a173e99304a4e6aee77013caa3..56fec1317128e66fb75bfcf45c17d511f0ec42a5 100644 (file)
@@ -619,13 +619,20 @@ static int do_open(struct block_device *bdev, struct inode *inode, struct file *
        }
        if (bdev->bd_contains == bdev) {
                struct gendisk *g = get_gendisk(dev);
+
+               if (!bdev->bd_queue) {
+                       struct blk_dev_struct *p = blk_dev + major(dev);
+                       bdev->bd_queue = &p->request_queue;
+                       if (p->queue)
+                               bdev->bd_queue =  p->queue(dev);
+               }
+
                if (bdev->bd_op->open) {
                        ret = bdev->bd_op->open(inode, file);
                        if (ret)
                                goto out2;
                }
                if (!bdev->bd_openers) {
-                       struct blk_dev_struct *p = blk_dev + major(dev);
                        struct backing_dev_info *bdi;
                        sector_t sect = 0;
 
@@ -636,10 +643,6 @@ static int do_open(struct block_device *bdev, struct inode *inode, struct file *
                                sect = p->nr_sects;
                        } else if (blk_size[major(dev)])
                                sect = blk_size[major(dev)][minor(dev)] << 1;
-                       if (p->queue)
-                               bdev->bd_queue =  p->queue(dev);
-                       else
-                               bdev->bd_queue = &p->request_queue;
                        bd_set_size(bdev, (loff_t)sect << 9);
                        bdi = blk_get_backing_dev_info(bdev);
                        if (bdi == NULL)