Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[linux-2.6-microblaze.git] / drivers / mmc / core / block.c
index 88f4c21..9890a15 100644 (file)
@@ -202,7 +202,7 @@ static void mmc_blk_put(struct mmc_blk_data *md)
        md->usage--;
        if (md->usage == 0) {
                int devidx = mmc_get_devidx(md->disk);
-               blk_put_queue(md->queue.queue);
+
                ida_simple_remove(&mmc_blk_ida, devidx);
                put_disk(md->disk);
                kfree(md);
@@ -2319,39 +2319,22 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
         */
        md->read_only = mmc_blk_readonly(card);
 
-       md->disk = alloc_disk(perdev_minors);
-       if (md->disk == NULL) {
-               ret = -ENOMEM;
+       md->disk = mmc_init_queue(&md->queue, card);
+       if (IS_ERR(md->disk)) {
+               ret = PTR_ERR(md->disk);
                goto err_kfree;
        }
 
        INIT_LIST_HEAD(&md->part);
        INIT_LIST_HEAD(&md->rpmbs);
        md->usage = 1;
-
-       ret = mmc_init_queue(&md->queue, card);
-       if (ret)
-               goto err_putdisk;
-
        md->queue.blkdata = md;
 
-       /*
-        * Keep an extra reference to the queue so that we can shutdown the
-        * queue (i.e. call blk_cleanup_queue()) while there are still
-        * references to the 'md'. The corresponding blk_put_queue() is in
-        * mmc_blk_put().
-        */
-       if (!blk_get_queue(md->queue.queue)) {
-               mmc_cleanup_queue(&md->queue);
-               ret = -ENODEV;
-               goto err_putdisk;
-       }
-
        md->disk->major = MMC_BLOCK_MAJOR;
+       md->disk->minors = perdev_minors;
        md->disk->first_minor = devidx * perdev_minors;
        md->disk->fops = &mmc_bdops;
        md->disk->private_data = md;
-       md->disk->queue = md->queue.queue;
        md->parent = parent;
        set_disk_ro(md->disk, md->read_only || default_ro);
        md->disk->flags = GENHD_FL_EXT_DEVT;
@@ -2400,8 +2383,6 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
 
        return md;
 
- err_putdisk:
-       put_disk(md->disk);
  err_kfree:
        kfree(md);
  out: