qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [PATCH v2 3/6] block: Add VFIO based NVMe driver


From: Paolo Bonzini
Subject: Re: [Qemu-block] [PATCH v2 3/6] block: Add VFIO based NVMe driver
Date: Thu, 23 Feb 2017 10:43:36 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0


On 23/02/2017 10:18, Fam Zheng wrote:
> +    for (i = 0; i < s->nr_queues; ++i) {
> +        s->queues[i]->free_req_queue_bh =
> +            aio_bh_new(new_context, nvme_free_req_queue_cb, s->queues[i]);
> +    }

aio_bh_new has the issue that you can complete two requests in one
nvme_process_completion call, but you would only invoke the bottom half
once.  Because this is a rare event, I think it's enough to use
aio_bh_schedule_oneshot instead of aio_bh_new.

> +static coroutine_fn int nvme_cmd_unmap_qiov(BlockDriverState *bs,
> +                                            QEMUIOVector *qiov)
> +{
> +    int r = 0;
> +    BDRVNVMeState *s = bs->opaque;
> +
> +    if (!s->inflight && !qemu_co_queue_empty(&s->dma_flush_queue)) {
> +        r = nvme_vfio_dma_reset_temporary(s->vfio);
> +        qemu_co_queue_next(&s->dma_flush_queue);
> +    }
> +    return r;
> +}

Should this be qemu_co_queue_restart_all instead?

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]