[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 8/8] virtio-blk: minimize virtio_blk_reset() AioContext lock regi
From: |
Stefan Hajnoczi |
Subject: |
[PATCH 8/8] virtio-blk: minimize virtio_blk_reset() AioContext lock region |
Date: |
Tue, 8 Nov 2022 16:19:30 -0500 |
blk_drain() needs the lock because it calls AIO_WAIT_WHILE().
The s->rq loop doesn't need the lock because dataplane has been stopped
when virtio_blk_reset() is called.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
hw/block/virtio-blk.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 771d87cfbe..0b411b3065 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -898,6 +898,7 @@ static void virtio_blk_reset(VirtIODevice *vdev)
ctx = blk_get_aio_context(s->blk);
aio_context_acquire(ctx);
blk_drain(s->blk);
+ aio_context_release(ctx);
/* We drop queued requests after blk_drain() because blk_drain() itself can
* produce them. */
@@ -908,8 +909,6 @@ static void virtio_blk_reset(VirtIODevice *vdev)
virtio_blk_free_request(req);
}
- aio_context_release(ctx);
-
assert(!s->dataplane_started);
blk_set_enable_write_cache(s->blk, s->original_wce);
}
--
2.38.1
- [PATCH 3/8] virtio: categorize callbacks in GS, (continued)
- [PATCH 3/8] virtio: categorize callbacks in GS, Stefan Hajnoczi, 2022/11/08
- [PATCH 4/8] virtio-blk: mark GLOBAL_STATE_CODE functions, Stefan Hajnoczi, 2022/11/08
- [PATCH 5/8] virtio-blk: mark IO_CODE functions, Stefan Hajnoczi, 2022/11/08
- [PATCH 7/8] virtio-blk: don't acquire AioContext in virtio_blk_handle_vq(), Stefan Hajnoczi, 2022/11/08
- [PATCH 6/8] virtio-blk: remove unnecessary AioContext lock from function already safe, Stefan Hajnoczi, 2022/11/08
- [PATCH 8/8] virtio-blk: minimize virtio_blk_reset() AioContext lock region,
Stefan Hajnoczi <=