[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 13/16] block/nvme: Simplify nvme_create_queue_pair() arguments
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH v3 13/16] block/nvme: Simplify nvme_create_queue_pair() arguments |
Date: |
Sat, 4 Jul 2020 23:30:48 +0200 |
nvme_create_queue_pair() doesn't require BlockDriverState anymore.
Replace it by BDRVNVMeState and AioContext to simplify.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
block/nvme.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/block/nvme.c b/block/nvme.c
index b2fc3c300a..51ac36dc4f 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -208,12 +208,12 @@ static void nvme_free_req_queue_cb(void *opaque)
qemu_mutex_unlock(&q->lock);
}
-static NVMeQueuePair *nvme_create_queue_pair(BlockDriverState *bs,
+static NVMeQueuePair *nvme_create_queue_pair(BDRVNVMeState *s,
+ AioContext *aio_context,
int idx, int size,
Error **errp)
{
int i, r;
- BDRVNVMeState *s = bs->opaque;
Error *local_err = NULL;
NVMeQueuePair *q;
uint64_t prp_list_iova;
@@ -232,8 +232,7 @@ static NVMeQueuePair
*nvme_create_queue_pair(BlockDriverState *bs,
q->s = s;
q->index = idx;
qemu_co_queue_init(&q->free_req_queue);
- q->completion_bh = aio_bh_new(bdrv_get_aio_context(bs),
- nvme_process_completion_bh, q);
+ q->completion_bh = aio_bh_new(aio_context, nvme_process_completion_bh, q);
r = qemu_vfio_dma_map(s->vfio, q->prp_list_pages,
s->page_size * NVME_NUM_REQS,
false, &prp_list_iova);
@@ -637,7 +636,8 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error
**errp)
NvmeCmd cmd;
int queue_size = NVME_QUEUE_SIZE;
- q = nvme_create_queue_pair(bs, n, queue_size, errp);
+ q = nvme_create_queue_pair(s, bdrv_get_aio_context(bs),
+ n, queue_size, errp);
if (!q) {
return false;
}
@@ -683,6 +683,7 @@ static int nvme_init(BlockDriverState *bs, const char
*device, int namespace,
Error **errp)
{
BDRVNVMeState *s = bs->opaque;
+ AioContext *aio_context = bdrv_get_aio_context(bs);
int ret;
uint64_t cap;
uint64_t timeout_ms;
@@ -743,7 +744,7 @@ static int nvme_init(BlockDriverState *bs, const char
*device, int namespace,
/* Set up admin queue. */
s->queues = g_new(NVMeQueuePair *, 1);
- s->queues[QUEUE_INDEX_ADMIN] = nvme_create_queue_pair(bs, 0,
+ s->queues[QUEUE_INDEX_ADMIN] = nvme_create_queue_pair(s, aio_context, 0,
NVME_QUEUE_SIZE,
errp);
if (!s->queues[QUEUE_INDEX_ADMIN]) {
--
2.21.3
- [PATCH v3 05/16] block/nvme: Improve error message when IO queue creation failed, (continued)
- [PATCH v3 05/16] block/nvme: Improve error message when IO queue creation failed, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 06/16] block/nvme: Use common error path in nvme_add_io_queue(), Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 07/16] block/nvme: Rename local variable, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 08/16] block/nvme: Use union of NvmeIdCtrl / NvmeIdNs structures, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 09/16] block/nvme: Replace qemu_try_blockalign0 by qemu_try_blockalign/memset, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 10/16] block/nvme: Replace qemu_try_blockalign(bs) by qemu_try_memalign(pg_sz), Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 11/16] block/nvme: Simplify nvme_init_queue() arguments, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 12/16] block/nvme: Replace BDRV_POLL_WHILE by AIO_WAIT_WHILE, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 13/16] block/nvme: Simplify nvme_create_queue_pair() arguments,
Philippe Mathieu-Daudé <=
- [PATCH v3 14/16] block/nvme: Extract nvme_poll_queue(), Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 15/16] block/nvme: Move nvme_poll_cb() earlier, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH v3 16/16] block/nvme: Use per-queuepair IRQ notifier and AIO context, Philippe Mathieu-Daudé, 2020/07/04