]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/block/virtio_blk.c
blk-mq: add ->init_request and ->exit_request methods
[mirror_ubuntu-bionic-kernel.git] / drivers / block / virtio_blk.c
index c7d02bc9d945cf590931d479ff552b65a75fc3b3..d06206abd340e27f302b423a9c788f322d078def 100644 (file)
@@ -480,11 +480,22 @@ static const struct device_attribute dev_attr_cache_type_rw =
        __ATTR(cache_type, S_IRUGO|S_IWUSR,
               virtblk_cache_type_show, virtblk_cache_type_store);
 
+static int virtblk_init_request(void *data, struct blk_mq_hw_ctx *hctx,
+               struct request *rq, unsigned int nr)
+{
+       struct virtio_blk *vblk = data;
+       struct virtblk_req *vbr = blk_mq_rq_to_pdu(rq);
+
+       sg_init_table(vbr->sg, vblk->sg_elems);
+       return 0;
+}
+
 static struct blk_mq_ops virtio_mq_ops = {
        .queue_rq       = virtio_queue_rq,
        .map_queue      = blk_mq_map_queue,
        .alloc_hctx     = blk_mq_alloc_single_hw_queue,
        .free_hctx      = blk_mq_free_single_hw_queue,
+       .init_request   = virtblk_init_request,
        .complete       = virtblk_request_done,
 };
 
@@ -497,16 +508,6 @@ static struct blk_mq_reg virtio_mq_reg = {
 };
 module_param_named(queue_depth, virtio_mq_reg.queue_depth, uint, 0444);
 
-static int virtblk_init_vbr(void *data, struct blk_mq_hw_ctx *hctx,
-                            struct request *rq, unsigned int nr)
-{
-       struct virtio_blk *vblk = data;
-       struct virtblk_req *vbr = blk_mq_rq_to_pdu(rq);
-
-       sg_init_table(vbr->sg, vblk->sg_elems);
-       return 0;
-}
-
 static int virtblk_probe(struct virtio_device *vdev)
 {
        struct virtio_blk *vblk;
@@ -577,8 +578,6 @@ static int virtblk_probe(struct virtio_device *vdev)
                goto out_put_disk;
        }
 
-       blk_mq_init_commands(q, virtblk_init_vbr, vblk);
-
        q->queuedata = vblk;
 
        virtblk_name_format("vd", index, vblk->disk->disk_name, DISK_NAME_LEN);