On Thu, Aug 20, 2020 at 06:58:59PM +0200, Philippe Mathieu-Daudé wrote: > nvme_create_queue_pair() doesn't require BlockDriverState anymore. > Replace it by BDRVNVMeState and AioContext to simplify. > > Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> > Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > block/nvme.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-)
Reviewed-by: Stefano Garzarella <sgarz...@redhat.com> > > diff --git a/block/nvme.c b/block/nvme.c > index 456fe61f5ea..1f67e888c84 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[INDEX_ADMIN] = nvme_create_queue_pair(bs, 0, > + s->queues[INDEX_ADMIN] = nvme_create_queue_pair(s, aio_context, 0, > NVME_QUEUE_SIZE, > errp); > if (!s->queues[INDEX_ADMIN]) { > -- > 2.26.2 > >