mirror of
https://github.com/mii443/qemu.git
synced 2025-12-03 11:08:25 +00:00
migration: Unify block node activation error handling
Migration code activates all block driver nodes on the destination when the migration completes. It does so by calling bdrv_invalidate_cache_all() and blk_resume_after_migration(). There is one code path for precopy and one for postcopy migration, resulting in four function calls, which used to have three different failure modes. This patch unifies the behaviour so that failure to activate all block nodes is non-fatal, but the error message is logged and the VM isn't automatically started. 'cont' will retry activating the block nodes. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
18
qmp.c
18
qmp.c
@@ -196,15 +196,15 @@ void qmp_cont(Error **errp)
|
||||
}
|
||||
|
||||
/* Continuing after completed migration. Images have been inactivated to
|
||||
* allow the destination to take control. Need to get control back now. */
|
||||
if (runstate_check(RUN_STATE_FINISH_MIGRATE) ||
|
||||
runstate_check(RUN_STATE_POSTMIGRATE))
|
||||
{
|
||||
bdrv_invalidate_cache_all(&local_err);
|
||||
if (local_err) {
|
||||
error_propagate(errp, local_err);
|
||||
return;
|
||||
}
|
||||
* allow the destination to take control. Need to get control back now.
|
||||
*
|
||||
* If there are no inactive block nodes (e.g. because the VM was just
|
||||
* paused rather than completing a migration), bdrv_inactivate_all() simply
|
||||
* doesn't do anything. */
|
||||
bdrv_invalidate_cache_all(&local_err);
|
||||
if (local_err) {
|
||||
error_propagate(errp, local_err);
|
||||
return;
|
||||
}
|
||||
|
||||
blk_resume_after_migration(&local_err);
|
||||
|
||||
Reference in New Issue
Block a user