[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 05/65] migration: Set migration status early in incoming side
|
From: |
Juan Quintela |
|
Subject: |
[PULL 05/65] migration: Set migration status early in incoming side |
|
Date: |
Wed, 11 Oct 2023 11:21:03 +0200 |
From: Fabiano Rosas <farosas@suse.de>
We are sending a migration event of MIGRATION_STATUS_SETUP at
qemu_start_incoming_migration but never actually setting the state.
This creates a window between qmp_migrate_incoming and
process_incoming_migration_co where the migration status is still
MIGRATION_STATUS_NONE. Calling query-migrate during this time will
return an empty response even though the incoming migration command
has already been issued.
Commit 7cf1fe6d68 ("migration: Add migration events on target side")
has added support to the 'events' capability to the incoming part of
migration, but chose to send the SETUP event without setting the
state. I'm assuming this was a mistake.
This introduces a change in behavior, any QMP client waiting for the
SETUP event will hang, unless it has previously enabled the 'events'
capability. Having the capability enabled is sufficient to continue to
receive the event.
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Message-ID: <20230712190742.22294-5-farosas@suse.de>
---
migration/migration.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/migration/migration.c b/migration/migration.c
index 585d3c8f55..2057e42134 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -431,13 +431,16 @@ void migrate_add_address(SocketAddress *address)
static void qemu_start_incoming_migration(const char *uri, Error **errp)
{
const char *p = NULL;
+ MigrationIncomingState *mis = migration_incoming_get_current();
/* URI is not suitable for migration? */
if (!migration_channels_and_uri_compatible(uri, errp)) {
return;
}
- qapi_event_send_migration(MIGRATION_STATUS_SETUP);
+ migrate_set_state(&mis->state, MIGRATION_STATUS_NONE,
+ MIGRATION_STATUS_SETUP);
+
if (strstart(uri, "tcp:", &p) ||
strstart(uri, "unix:", NULL) ||
strstart(uri, "vsock:", NULL)) {
@@ -531,7 +534,7 @@ process_incoming_migration_co(void *opaque)
mis->largest_page_size = qemu_ram_pagesize_largest();
postcopy_state_set(POSTCOPY_INCOMING_NONE);
- migrate_set_state(&mis->state, MIGRATION_STATUS_NONE,
+ migrate_set_state(&mis->state, MIGRATION_STATUS_SETUP,
MIGRATION_STATUS_ACTIVE);
mis->loadvm_co = qemu_coroutine_self();
--
2.41.0
- [PULL 00/65] Migration 20231011 patches, Juan Quintela, 2023/10/11
- [PULL 01/65] migration/qmp: Fix crash on setting tls-authz with null, Juan Quintela, 2023/10/11
- [PULL 04/65] tests/qtest: migration: Use migrate_incoming_qmp where appropriate, Juan Quintela, 2023/10/11
- [PULL 07/65] migration: Allow RECOVER->PAUSED convertion for dest qemu, Juan Quintela, 2023/10/11
- [PULL 03/65] tests/qtest: migration: Add migrate_incoming_qmp helper, Juan Quintela, 2023/10/11
- [PULL 06/65] tests/qtest: migration: Add support for negative testing of qmp_migrate, Juan Quintela, 2023/10/11
- [PULL 02/65] tests/qtest: migration: Expose migrate_set_capability, Juan Quintela, 2023/10/11
- [PULL 09/65] migration/rdma: Clean up qemu_rdma_data_init()'s return type, Juan Quintela, 2023/10/11
- [PULL 10/65] migration/rdma: Clean up rdma_delete_block()'s return type, Juan Quintela, 2023/10/11
- [PULL 05/65] migration: Set migration status early in incoming side,
Juan Quintela <=
- [PULL 08/65] migration/rdma: Clean up qemu_rdma_poll()'s return type, Juan Quintela, 2023/10/11
- [PULL 13/65] migration/rdma: Fix unwanted integer truncation, Juan Quintela, 2023/10/11
- [PULL 12/65] migration/rdma: Consistently use uint64_t for work request IDs, Juan Quintela, 2023/10/11
- [PULL 11/65] migration/rdma: Drop fragile wr_id formatting, Juan Quintela, 2023/10/11
- [PULL 14/65] migration/rdma: Clean up two more harmless signed vs. unsigned issues, Juan Quintela, 2023/10/11
- [PULL 15/65] migration/rdma: Give qio_channel_rdma_source_funcs internal linkage, Juan Quintela, 2023/10/11
- [PULL 16/65] migration/rdma: Fix qemu_rdma_accept() to return failure on errors, Juan Quintela, 2023/10/11
- [PULL 17/65] migration/rdma: Put @errp parameter last, Juan Quintela, 2023/10/11
- [PULL 18/65] migration/rdma: Eliminate error_propagate(), Juan Quintela, 2023/10/11
- [PULL 19/65] migration/rdma: Drop rdma_add_block() error handling, Juan Quintela, 2023/10/11