static int mspro_block_init_disk(struct memstick_dev *card)
 {
        struct mspro_block_data *msb = memstick_get_drvdata(card);
+       struct queue_limits lim = {
+               .logical_block_size     = msb->page_size,
+               .max_hw_sectors         = MSPRO_BLOCK_MAX_PAGES,
+               .max_segments           = MSPRO_BLOCK_MAX_SEGS,
+               .max_segment_size       = MSPRO_BLOCK_MAX_PAGES * msb->page_size,
+       };
        struct mspro_devinfo *dev_info = NULL;
        struct mspro_sys_info *sys_info = NULL;
        struct mspro_sys_attr *s_attr = NULL;
        if (rc)
                goto out_release_id;
 
-       msb->disk = blk_mq_alloc_disk(&msb->tag_set, NULL, card);
+       msb->disk = blk_mq_alloc_disk(&msb->tag_set, &lim, card);
        if (IS_ERR(msb->disk)) {
                rc = PTR_ERR(msb->disk);
                goto out_free_tag_set;
        }
        msb->queue = msb->disk->queue;
 
-       blk_queue_max_hw_sectors(msb->queue, MSPRO_BLOCK_MAX_PAGES);
-       blk_queue_max_segments(msb->queue, MSPRO_BLOCK_MAX_SEGS);
-       blk_queue_max_segment_size(msb->queue,
-                                  MSPRO_BLOCK_MAX_PAGES * msb->page_size);
-
        msb->disk->major = major;
        msb->disk->first_minor = disk_id << MSPRO_BLOCK_PART_SHIFT;
        msb->disk->minors = 1 << MSPRO_BLOCK_PART_SHIFT;
 
        sprintf(msb->disk->disk_name, "mspblk%d", disk_id);
 
-       blk_queue_logical_block_size(msb->queue, msb->page_size);
-
        capacity = be16_to_cpu(sys_info->user_block_count);
        capacity *= be16_to_cpu(sys_info->block_size);
        capacity *= msb->page_size >> 9;