int id;
        u32 blocks, bsize;
        int bshift;
-       struct request_queue *queue;
        struct gendisk *disk;
 };
 
        dev->bsize = bsize;
        dev->bshift = ffs(bsize) - 10;
 
-       dev->queue = blk_alloc_queue(NUMA_NO_NODE);
-       if (dev->queue == NULL)
-               goto free_dev;
-
-       blk_queue_logical_block_size(dev->queue, bsize);
-
-       dev->disk = alloc_disk(16);
+       dev->disk = blk_alloc_disk(NUMA_NO_NODE);
        if (!dev->disk)
-               goto free_queue;
+               goto free_dev;
 
        dev->disk->major = major_num;
        dev->disk->first_minor = dev_id * 16;
+       dev->disk->minors = 16;
        dev->disk->fops = &nfhd_ops;
        dev->disk->private_data = dev;
        sprintf(dev->disk->disk_name, "nfhd%u", dev_id);
        set_capacity(dev->disk, (sector_t)blocks * (bsize / 512));
-       dev->disk->queue = dev->queue;
-
+       blk_queue_logical_block_size(dev->disk->queue, bsize);
        add_disk(dev->disk);
 
        list_add_tail(&dev->list, &nfhd_list);
 
        return 0;
 
-free_queue:
-       blk_cleanup_queue(dev->queue);
 free_dev:
        kfree(dev);
 out:
        list_for_each_entry_safe(dev, next, &nfhd_list, list) {
                list_del(&dev->list);
                del_gendisk(dev->disk);
-               put_disk(dev->disk);
-               blk_cleanup_queue(dev->queue);
+               blk_cleanup_disk(dev->disk);
                kfree(dev);
        }
        unregister_blkdev(major_num, "nfhd");