This function is to be called to inform the block layer that an incoming live migration has been canceled or has just finished. It will also clear all BDRV_O_INCOMING flags.
Signed-off-by: Benoit Canet <benoit.ca...@gmail.com> --- block.c | 13 +++++++++++++ block.h | 1 + 2 files changed, 14 insertions(+), 0 deletions(-) diff --git a/block.c b/block.c index 3e2260d..889d464 100644 --- a/block.c +++ b/block.c @@ -3588,6 +3588,19 @@ void bdrv_set_incoming_migration(void) incoming_migration = true; } +void bdrv_clear_incoming_migration_all(void) +{ + BlockDriverState *bs; + + assert(incoming_migration == true); + + incoming_migration = false; + + QTAILQ_FOREACH(bs, &bdrv_states, list) { + bs->open_flags = bs->open_flags & ~(BDRV_O_INCOMING); + } +} + int bdrv_flush(BlockDriverState *bs) { Coroutine *co; diff --git a/block.h b/block.h index 23af1cc..2ddf9c5 100644 --- a/block.h +++ b/block.h @@ -224,6 +224,7 @@ void bdrv_invalidate_cache(BlockDriverState *bs); void bdrv_invalidate_cache_all(void); void bdrv_set_incoming_migration(void); +void bdrv_clear_incoming_migration_all(void); /* Ensure contents are flushed to disk. */ int bdrv_flush(BlockDriverState *bs); -- 1.7.7.6