On Tue, Mar 10, 2020 at 12:38:29 +0100, Kevin Wolf wrote:
> external_snapshot_prepare() tries to move the overlay to the AioContext
> of the backing file (the snapshotted node). However, it's possible that
> this doesn't work, but the backing file can instead be moved to the
> overlay's AioContext (e.g. opening the backing chain for a mirror
> target).
> 
> bdrv_append() already indirectly uses bdrv_attach_node(), which takes
> care to move nodes to make sure they use the same AioContext and which
> tries both directions.
> 
> So the problem has a simple fix: Just delete the unnecessary extra
> bdrv_try_set_aio_context() call in external_snapshot_prepare() and
> instead assert in bdrv_append() that both nodes were indeed moved to the
> same AioContext.
> 
> Signed-off-by: Kevin Wolf <kw...@redhat.com>
> ---
>  block.c    |  1 +
>  blockdev.c | 16 ----------------
>  2 files changed, 1 insertion(+), 16 deletions(-)

Tested-by: Peter Krempa <pkre...@redhat.com>

Unfortunately I don't feel confident enough in the intricacies of the
aio contexts. Nevertheless Fixing bugs by deleting code is awesome!


Reply via email to