[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Qemu-block] [PATCH v2 2/4] migration: Inactivate image
From: |
Jeff Cody |
Subject: |
Re: [Qemu-devel] [Qemu-block] [PATCH v2 2/4] migration: Inactivate images after .save_live_complete_precopy() |
Date: |
Tue, 30 May 2017 11:29:10 -0400 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Tue, May 30, 2017 at 05:22:51PM +0200, Kevin Wolf 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: Fam Zheng <address@hidden>
> Reviewed-by: Juan Quintela <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> ---
> migration/migration.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index ad29e53..77a05d1 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -1820,17 +1820,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();
> --
> 1.8.3.1
>
>
Reviewed-by: Jeff Cody <address@hidden>