From 8f4974543203bd1e3a77f198ebb2c60d177b1c40 Mon Sep 17 00:00:00 2001 From: Emanuele Giuseppe Esposito Date: Fri, 13 Jan 2023 21:42:00 +0100 Subject: block: Convert bdrv_io_plug() to co_wrapper BlockDriver->bdrv_io_plug is categorized as IO callback, and it currently doesn't run in a coroutine. We should let it take a graph rdlock since the callback traverses the block nodes graph, which however is only possible in a coroutine. The only caller of this function is blk_io_plug(), therefore make blk_io_plug() a co_wrapper, so that we're always running in a coroutine where the lock can be taken. Signed-off-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf Message-Id: <20230113204212.359076-3-kwolf@redhat.com> Reviewed-by: Emanuele Giuseppe Esposito Signed-off-by: Kevin Wolf --- include/block/block_int-common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/block/block_int-common.h') diff --git a/include/block/block_int-common.h b/include/block/block_int-common.h index 887ace7..7eea952 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -725,7 +725,7 @@ struct BlockDriver { void (*bdrv_debug_event)(BlockDriverState *bs, BlkdebugEvent event); /* io queue for linux-aio */ - void (*bdrv_io_plug)(BlockDriverState *bs); + void coroutine_fn (*bdrv_co_io_plug)(BlockDriverState *bs); void (*bdrv_io_unplug)(BlockDriverState *bs); /** -- cgit v1.1