block/nvme: Simplify nvme_create_queue_pair() arguments

nvme_create_queue_pair() doesn't require BlockDriverState anymore.
Replace it by BDRVNVMeState and AioContext to simplify.

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20200821195359.1285345-14-philmd@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Philippe Mathieu-Daudé 2020-08-21 21:53:57 +02:00 committed by Kevin Wolf
parent 073a06978c
commit 0a28b02ef9
1 changed files with 7 additions and 6 deletions

View File

@ -208,12 +208,12 @@ static void nvme_free_req_queue_cb(void *opaque)
qemu_mutex_unlock(&q->lock); 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, int idx, int size,
Error **errp) Error **errp)
{ {
int i, r; int i, r;
BDRVNVMeState *s = bs->opaque;
Error *local_err = NULL; Error *local_err = NULL;
NVMeQueuePair *q; NVMeQueuePair *q;
uint64_t prp_list_iova; uint64_t prp_list_iova;
@ -232,8 +232,7 @@ static NVMeQueuePair *nvme_create_queue_pair(BlockDriverState *bs,
q->s = s; q->s = s;
q->index = idx; q->index = idx;
qemu_co_queue_init(&q->free_req_queue); qemu_co_queue_init(&q->free_req_queue);
q->completion_bh = aio_bh_new(bdrv_get_aio_context(bs), q->completion_bh = aio_bh_new(aio_context, nvme_process_completion_bh, q);
nvme_process_completion_bh, q);
r = qemu_vfio_dma_map(s->vfio, q->prp_list_pages, r = qemu_vfio_dma_map(s->vfio, q->prp_list_pages,
s->page_size * NVME_NUM_REQS, s->page_size * NVME_NUM_REQS,
false, &prp_list_iova); false, &prp_list_iova);
@ -637,7 +636,8 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp)
NvmeCmd cmd; NvmeCmd cmd;
int queue_size = NVME_QUEUE_SIZE; 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) { if (!q) {
return false; return false;
} }
@ -683,6 +683,7 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace,
Error **errp) Error **errp)
{ {
BDRVNVMeState *s = bs->opaque; BDRVNVMeState *s = bs->opaque;
AioContext *aio_context = bdrv_get_aio_context(bs);
int ret; int ret;
uint64_t cap; uint64_t cap;
uint64_t timeout_ms; uint64_t timeout_ms;
@ -743,7 +744,7 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace,
/* Set up admin queue. */ /* Set up admin queue. */
s->queues = g_new(NVMeQueuePair *, 1); s->queues = g_new(NVMeQueuePair *, 1);
s->queues[INDEX_ADMIN] = nvme_create_queue_pair(bs, 0, s->queues[INDEX_ADMIN] = nvme_create_queue_pair(s, aio_context, 0,
NVME_QUEUE_SIZE, NVME_QUEUE_SIZE,
errp); errp);
if (!s->queues[INDEX_ADMIN]) { if (!s->queues[INDEX_ADMIN]) {