[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/4] migration: Inactivate images after .save_li
From: |
Juan Quintela |
Subject: |
Re: [Qemu-devel] [PATCH 2/4] migration: Inactivate images after .save_live_complete_precopy() |
Date: |
Wed, 24 May 2017 13:34:35 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Kevin Wolf <address@hidden> wrote:
> Block migration may still access the image during its
> .save_live_complete_precopy() implementation, so we should only
> inactivate the image afterwards.
>
> Another reason for the change is that inactivating an image fails when
> there is still a non-device BlockBackend using it, which includes the
> BBs used by block migration. We want to give block migration a chance to
> release the BBs before trying to inactivate the image (this will be done
> in another patch).
>
> Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
> ---
> migration/migration.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index 0304c01..846ba09 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -1787,17 +1787,19 @@ static void migration_completion(MigrationState *s,
> int current_active_state,
>
> if (!ret) {
> ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
> + if (ret >= 0) {
> + qemu_file_set_rate_limit(s->to_dst_file, INT64_MAX);
> + qemu_savevm_state_complete_precopy(s->to_dst_file, false);
> + }
> /*
> * Don't mark the image with BDRV_O_INACTIVE flag if
> * we will go into COLO stage later.
> */
> if (ret >= 0 && !migrate_colo_enabled()) {
> ret = bdrv_inactivate_all();
> - }
> - if (ret >= 0) {
> - qemu_file_set_rate_limit(s->to_dst_file, INT64_MAX);
> - qemu_savevm_state_complete_precopy(s->to_dst_file, false);
> - s->block_inactive = true;
> + if (ret >= 0) {
> + s->block_inactive = true;
> + }
> }
> }
> qemu_mutex_unlock_iothread();