Message ID | 20230912231037.826804-4-stefanha@redhat.com |
---|---|
State | New |
Headers | show |
Series | block-backend: process I/O in the current AioContext | expand |
On Tue, Sep 12, 2023 at 07:10:35PM -0400, Stefan Hajnoczi wrote: > Switch blk_aio_*() APIs over to multi-queue by using > qemu_get_current_aio_context() instead of blk_get_aio_context(). This > change will allow devices to process I/O in multiple IOThreads in the > future. > > I audited existing blk_aio_*() callers: > - migration/block.c: blk_mig_lock() protects the data accessed by the > completion callback. > - The remaining emulated devices and exports run with > qemu_get_aio_context() == blk_get_aio_context(). > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > block/block-backend.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/block/block-backend.c b/block/block-backend.c index a77295a198..4863be5691 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1530,7 +1530,7 @@ BlockAIOCB *blk_abort_aio_request(BlockBackend *blk, acb->blk = blk; acb->ret = ret; - replay_bh_schedule_oneshot_event(blk_get_aio_context(blk), + replay_bh_schedule_oneshot_event(qemu_get_current_aio_context(), error_callback_bh, acb); return &acb->common; } @@ -1584,11 +1584,11 @@ static BlockAIOCB *blk_aio_prwv(BlockBackend *blk, int64_t offset, acb->has_returned = false; co = qemu_coroutine_create(co_entry, acb); - aio_co_enter(blk_get_aio_context(blk), co); + aio_co_enter(qemu_get_current_aio_context(), co); acb->has_returned = true; if (acb->rwco.ret != NOT_DONE) { - replay_bh_schedule_oneshot_event(blk_get_aio_context(blk), + replay_bh_schedule_oneshot_event(qemu_get_current_aio_context(), blk_aio_complete_bh, acb); }
Switch blk_aio_*() APIs over to multi-queue by using qemu_get_current_aio_context() instead of blk_get_aio_context(). This change will allow devices to process I/O in multiple IOThreads in the future. I audited existing blk_aio_*() callers: - migration/block.c: blk_mig_lock() protects the data accessed by the completion callback. - The remaining emulated devices and exports run with qemu_get_aio_context() == blk_get_aio_context(). Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- block/block-backend.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)