On 06/04/2016 13:11, Cornelia Huck wrote:
>> > +static void virtio_queue_notify_aio_vq(VirtQueue *vq)
>> > +{
>> > +    if (vq->vring.desc && vq->handle_aio_output) {
>> > +        VirtIODevice *vdev = vq->vdev;
>> > +
>> > +        trace_virtio_queue_notify(vdev, vq - vdev->vq, vq);
>> > +        vq->handle_aio_output(vdev, vq);
>> > +    }
>> > +}
>> > +
> So this avoids reentrancy, but might we miss one notify if
> ->handle_aio_output has already been unset? What am I missing?

Calling the notifier just before unset is handled by using "false,
false" when unsetting the notifier, and only setting
vq->handle_aio_output after the notifier has been unset.

Patch 7 makes things clearer.

Paolo

Reply via email to