mirror of https://github.com/xemu-project/xemu.git
backup-top: Begin drain earlier
When dropping backup-top, we need to drain the node before freeing the BlockCopyState. Otherwise, requests may still be in flight and then the assertion in shres_destroy() will fail. (This becomes visible in intermittent failure of 056.) Cc: qemu-stable@nongnu.org Signed-off-by: Max Reitz <mreitz@redhat.com> Message-id: 20191219182638.104621-1-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
75ab574b4c
commit
503ca1262b
|
@ -257,12 +257,12 @@ void bdrv_backup_top_drop(BlockDriverState *bs)
|
||||||
BDRVBackupTopState *s = bs->opaque;
|
BDRVBackupTopState *s = bs->opaque;
|
||||||
AioContext *aio_context = bdrv_get_aio_context(bs);
|
AioContext *aio_context = bdrv_get_aio_context(bs);
|
||||||
|
|
||||||
block_copy_state_free(s->bcs);
|
|
||||||
|
|
||||||
aio_context_acquire(aio_context);
|
aio_context_acquire(aio_context);
|
||||||
|
|
||||||
bdrv_drained_begin(bs);
|
bdrv_drained_begin(bs);
|
||||||
|
|
||||||
|
block_copy_state_free(s->bcs);
|
||||||
|
|
||||||
s->active = false;
|
s->active = false;
|
||||||
bdrv_child_refresh_perms(bs, bs->backing, &error_abort);
|
bdrv_child_refresh_perms(bs, bs->backing, &error_abort);
|
||||||
bdrv_replace_node(bs, backing_bs(bs), &error_abort);
|
bdrv_replace_node(bs, backing_bs(bs), &error_abort);
|
||||||
|
|
Loading…
Reference in New Issue