[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 2/8] migration: Inactivate images after .save_live_co
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 2/8] migration: Inactivate images after .save_live_complete_precopy() |
Date: |
Wed, 7 Jun 2017 19:50:13 +0200 |
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>
Reviewed-by: Jeff Cody <address@hidden>
---
migration/migration.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/migration/migration.c b/migration/migration.c
index 6f0705a..fc95acb 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1825,17 +1825,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
- [Qemu-block] [PULL 0/8] Block layer patches, Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 1/8] block: Fix anonymous BBs in blk_root_inactivate(), Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 2/8] migration: Inactivate images after .save_live_complete_precopy(),
Kevin Wolf <=
- [Qemu-block] [PULL 3/8] migration/block: Clean up BBs in block_save_complete(), Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 4/8] qemu-iotests: Block migration test, Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 5/8] commit: Fix use after free in completion, Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 7/8] block/qcow.c: Fix memory leak in qcow_create(), Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 6/8] qemu-iotests: Test automatic commit job cancel on hot unplug, Kevin Wolf, 2017/06/07
- [Qemu-block] [PULL 8/8] block: fix external snapshot abort permission error, Kevin Wolf, 2017/06/07
- Re: [Qemu-block] [Qemu-devel] [PULL 0/8] Block layer patches, Peter Maydell, 2017/06/12