Am 23.11.2022 um 12:42 hat Emanuele Giuseppe Esposito geschrieben: > Right now, we take the first parameter of the function to get the > BlockDriverState to pass to bdrv_poll_co(), that internally calls > functions that figure in which aiocontext the coroutine should run. > > However, it is useless to pass a bs just to get its own AioContext, > so instead pass it directly, and default to the main loop if no > BlockDriverState is passed as parameter. > > Signed-off-by: Emanuele Giuseppe Esposito <eespo...@redhat.com>
Patch 10 and 11 have the same subject line. Did you intend them to be squashed together? > diff --git a/scripts/block-coroutine-wrapper.py > b/scripts/block-coroutine-wrapper.py > index 7e8f2da84b..1d552cb734 100644 > --- a/scripts/block-coroutine-wrapper.py > +++ b/scripts/block-coroutine-wrapper.py > @@ -78,14 +78,14 @@ def __init__(self, return_type: str, name: str, args: str, > > t = self.args[0].type > if t == 'BlockDriverState *': > - bs = 'bs' > + ctx = 'bdrv_get_aio_context(bs)' > elif t == 'BdrvChild *': > - bs = 'child->bs' > + ctx = 'bdrv_get_aio_context(child->bs)' > elif t == 'BlockBackend *': > - bs = 'blk_bs(blk)' > + ctx = 'bdrv_get_aio_context(blk_bs(blk))' This should use blk_get_aio_context(). If a BlockBackend has no root attached, i.e. blk_bs(blk) == NULL, it can still be in a non-mainloop AioContext. Kevin