Use the automatic AIO context acquire/release in virtio_blk_reset(). Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- hw/block/virtio-blk.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index f139cd7cc9c..2dd6428e7b3 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -896,24 +896,22 @@ static void virtio_blk_dma_restart_cb(void *opaque, bool running, static void virtio_blk_reset(VirtIODevice *vdev) { VirtIOBlock *s = VIRTIO_BLK(vdev); - AioContext *ctx; VirtIOBlockReq *req; - ctx = blk_get_aio_context(s->blk); - aio_context_acquire(ctx); - blk_drain(s->blk); - - /* We drop queued requests after blk_drain() because blk_drain() itself can - * produce them. */ - while (s->rq) { - req = s->rq; - s->rq = req->next; - virtqueue_detach_element(req->vq, &req->elem, 0); - virtio_blk_free_request(req); + WITH_AIO_CONTEXT_ACQUIRE_GUARD(blk_get_aio_context(s->blk)) { + blk_drain(s->blk); + /* + * We drop queued requests after blk_drain() because + * blk_drain() itself can produce them. + */ + while (s->rq) { + req = s->rq; + s->rq = req->next; + virtqueue_detach_element(req->vq, &req->elem, 0); + virtio_blk_free_request(req); + } } - aio_context_release(ctx); - assert(!s->dataplane_started); blk_set_enable_write_cache(s->blk, s->original_wce); } -- 2.31.1