Thread (36 messages) 36 messages, 4 authors, 2021-06-11

Re: [PATCH 07/30] ms_block: use blk_mq_alloc_disk

From: Ulf Hansson <hidden>
Date: 2021-06-03 15:37:21
Also in: ceph-devel, dm-devel, linux-block, linux-mmc, linux-s390, linuxppc-dev, xen-devel

On Wed, 2 Jun 2021 at 08:54, Christoph Hellwig [off-list ref] wrote:
Use the blk_mq_alloc_disk API to simplify the gendisk and request_queue
allocation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Ulf Hansson <redacted>

Kind regards
Uffe

quoted hunk ↗ jump to hunk
---
 drivers/memstick/core/ms_block.c | 25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)
diff --git a/drivers/memstick/core/ms_block.c b/drivers/memstick/core/ms_block.c
index 0bacf4268f83..dac258d12aca 100644
--- a/drivers/memstick/core/ms_block.c
+++ b/drivers/memstick/core/ms_block.c
@@ -2110,21 +2110,17 @@ static int msb_init_disk(struct memstick_dev *card)
        if (msb->disk_id  < 0)
                return msb->disk_id;

-       msb->disk = alloc_disk(0);
-       if (!msb->disk) {
-               rc = -ENOMEM;
+       rc = blk_mq_alloc_sq_tag_set(&msb->tag_set, &msb_mq_ops, 2,
+                                    BLK_MQ_F_SHOULD_MERGE);
+       if (rc)
                goto out_release_id;
-       }

-       msb->queue = blk_mq_init_sq_queue(&msb->tag_set, &msb_mq_ops, 2,
-                                               BLK_MQ_F_SHOULD_MERGE);
-       if (IS_ERR(msb->queue)) {
-               rc = PTR_ERR(msb->queue);
-               msb->queue = NULL;
-               goto out_put_disk;
+       msb->disk = blk_mq_alloc_disk(&msb->tag_set, card);
+       if (IS_ERR(msb->disk)) {
+               rc = PTR_ERR(msb->disk);
+               goto out_free_tag_set;
        }
-
-       msb->queue->queuedata = card;
+       msb->queue = msb->disk->queue;

        blk_queue_max_hw_sectors(msb->queue, MS_BLOCK_MAX_PAGES);
        blk_queue_max_segments(msb->queue, MS_BLOCK_MAX_SEGS);
@@ -2135,7 +2131,6 @@ static int msb_init_disk(struct memstick_dev *card)
        sprintf(msb->disk->disk_name, "msblk%d", msb->disk_id);
        msb->disk->fops = &msb_bdops;
        msb->disk->private_data = msb;
-       msb->disk->queue = msb->queue;

        capacity = msb->pages_in_block * msb->logical_block_count;
        capacity *= (msb->page_size / 512);
@@ -2155,8 +2150,8 @@ static int msb_init_disk(struct memstick_dev *card)
        dbg("Disk added");
        return 0;

-out_put_disk:
-       put_disk(msb->disk);
+out_free_tag_set:
+       blk_mq_free_tag_set(&msb->tag_set);
 out_release_id:
        mutex_lock(&msb_disk_lock);
        idr_remove(&msb_disk_idr, msb->disk_id);
--
2.30.2
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help