mirror of https://github.com/xemu-project/xemu.git
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:
parent
073a06978c
commit
0a28b02ef9
13
block/nvme.c
13
block/nvme.c
|
@ -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]) {
|
||||||
|
|
Loading…
Reference in New Issue