aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Xu <peterx@redhat.com>2025-01-14 18:07:40 -0500
committerFabiano Rosas <farosas@suse.de>2025-01-29 11:56:41 -0300
commita880ddd8ce387231b9a93fb2964425ea4e6c9728 (patch)
tree57b315e5c5b8154437b624ada7a776d3400a0c8a
parentec611bd731af7dce318fffc96f57c46e62fb7e16 (diff)
downloadqemu-a880ddd8ce387231b9a93fb2964425ea4e6c9728.zip
qemu-a880ddd8ce387231b9a93fb2964425ea4e6c9728.tar.gz
qemu-a880ddd8ce387231b9a93fb2964425ea4e6c9728.tar.bz2
migration: Take BQL slightly longer in postcopy_start()
This paves way for some follow up patch to modify migration states at the end of postcopy_start(), which should better be with the BQL so that there's no way of concurrent cancellation. So we'll do something slightly more with BQL but they're really trivial, hopefully nothing will really chance with this. A side benefit is we can drop another explicit lock() in failure path. Signed-off-by: Peter Xu <peterx@redhat.com> Tested-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Juraj Marcin <jmarcin@redhat.com> Link: https://lore.kernel.org/r/20250114230746.3268797-11-peterx@redhat.com Signed-off-by: Fabiano Rosas <farosas@suse.de>
-rw-r--r--migration/migration.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/migration/migration.c b/migration/migration.c
index 5a3d075..4ba6c89 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -2753,8 +2753,6 @@ static int postcopy_start(MigrationState *ms, Error **errp)
migration_downtime_end(ms);
- bql_unlock();
-
if (migrate_postcopy_ram()) {
/*
* Although this ping is just for debug, it could potentially be
@@ -2770,7 +2768,6 @@ static int postcopy_start(MigrationState *ms, Error **errp)
ret = qemu_file_get_error(ms->to_dst_file);
if (ret) {
error_setg_errno(errp, -ret, "postcopy_start: Migration stream error");
- bql_lock();
goto fail;
}
trace_postcopy_preempt_enabled(migrate_postcopy_preempt());
@@ -2781,6 +2778,8 @@ static int postcopy_start(MigrationState *ms, Error **errp)
*/
migration_rate_set(migrate_max_postcopy_bandwidth());
+ bql_unlock();
+
return ret;
fail_closefb: