On Thu, 2 Mar 2017 14:04:22 +0100
Halil Pasic <[email protected]> wrote:
> diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
> index 5556f0e..13dd14d 100644
> --- a/hw/block/dataplane/virtio-blk.c
> +++ b/hw/block/dataplane/virtio-blk.c
> @@ -258,9 +258,16 @@ void virtio_blk_data_plane_stop(VirtIODevice *vdev)
> virtio_queue_aio_set_host_notifier_handler(vq, s->ctx, NULL);
> }
>
> - /* Drain and switch bs back to the QEMU main loop */
> + /* Drain and switch bs back to the QEMU main loop. After drain, the
> + * device will not submit (nor comple) any requests until dataplane
s/comple/complete/
> + * starts again.
> + */
> blk_set_aio_context(s->conf->conf.blk, qemu_get_aio_context());
>
> + /* Notify guest before the guest notifiers get cleaned up */
> + qemu_bh_cancel(s->bh);
> + notify_guest_bh(s);
> +
Hm... does virtio-scsi dataplane need a similar treatment? Or am I
missing something?
> aio_context_release(s->ctx);
>
> for (i = 0; i < nvqs; i++) {