qemu/migration
Vladimir Sementsov-Ogievskiy dd42ce24a3 migration: split migration_incoming_co
Originally, migration_incoming_co was introduced by
25d0c16f62
   "migration: Switch to COLO process after finishing loadvm"
to be able to enter from COLO code to one specific yield point, added
by 25d0c16f62.

Later in 923709896b
 "migration: poll the cm event for destination qemu"
we reused this variable to wake the migration incoming coroutine from
RDMA code.

That was doubtful idea. Entering coroutines is a very fragile thing:
you should be absolutely sure which yield point you are going to enter.

I don't know how much is it safe to enter during qemu_loadvm_state()
which I think what RDMA want to do. But for sure RDMA shouldn't enter
the special COLO-related yield-point. As well, COLO code doesn't want
to enter during qemu_loadvm_state(), it want to enter it's own specific
yield-point.

As well, when in 8e48ac9586
 "COLO: Add block replication into colo process" we added
bdrv_invalidate_cache_all() call (now it's called activate_all())
it became possible to enter the migration incoming coroutine during
that call which is wrong too.

So, let't make these things separate and disjoint: loadvm_co for RDMA,
non-NULL during qemu_loadvm_state(), and colo_incoming_co for COLO,
non-NULL only around specific yield.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Message-Id: <20230515130640.46035-3-vsementsov@yandex-team.ru>
Signed-off-by: Juan Quintela <quintela@redhat.com>
2023-05-18 18:40:51 +02:00
..
block-dirty-bitmap.c migration: Fix block_bitmap_mapping migration 2023-05-05 01:04:32 +02:00
block.c qemu-file: Remove total from qemu_file_total_transferred_*() 2023-05-15 13:46:14 +02:00
block.h migration: disable auto-converge during bulk block migration 2017-09-27 11:27:14 +01:00
channel-block.c io: Add support for MSG_PEEK for socket channel 2023-02-06 19:22:56 +01:00
channel-block.h migration: introduce a QIOChannel impl for BlockDriverState VMState 2022-06-22 19:33:43 +01:00
channel.c migration: check magic value for deciding the mapping of channels 2023-02-06 19:22:57 +01:00
channel.h migration: check magic value for deciding the mapping of channels 2023-02-06 19:22:57 +01:00
colo-failover.c migration/colo: Improve an x-colo-lost-heartbeat error message 2023-02-23 14:10:17 +01:00
colo.c migration: split migration_incoming_co 2023-05-18 18:40:51 +02:00
dirtyrate.c sysemu/kvm: Remove unused headers 2023-05-16 09:13:34 +02:00
dirtyrate.h migration/dirtyrate: Refactor dirty page rate calculation 2022-07-20 12:15:08 +01:00
exec.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
exec.h migration: Export exec.c functions in its own file 2017-06-01 18:49:22 +02:00
fd.c monitor: Use getter/setter functions for cur_mon 2020-10-09 07:08:19 +02:00
fd.h migration: Fix fd protocol for incoming defer 2019-06-05 12:43:55 +02:00
global_state.c migration: Silence compiler warning in global_state_store_running() 2020-10-02 12:28:48 +01:00
meson.build migration: Make dirtyrate.c target independent 2023-05-15 10:33:05 +02:00
migration-hmp-cmds.c build: move COLO under CONFIG_REPLICATION 2023-05-10 18:48:11 +02:00
migration-stats.c migration: Rename RAMStats to MigrationAtomicStats 2023-05-03 11:24:20 +02:00
migration-stats.h migration: Put zero_pages in alphabetical order 2023-05-05 01:04:32 +02:00
migration.c migration: split migration_incoming_co 2023-05-18 18:40:51 +02:00
migration.h migration: split migration_incoming_co 2023-05-18 18:40:51 +02:00
multifd-zlib.c migration: Move parameters functions to option.c 2023-04-24 15:01:46 +02:00
multifd-zstd.c migration: Move parameters functions to option.c 2023-04-24 15:01:46 +02:00
multifd.c multifd: Add the ramblock to MultiFDRecvParams 2023-05-10 18:48:11 +02:00
multifd.h multifd: Add the ramblock to MultiFDRecvParams 2023-05-10 18:48:11 +02:00
options.c migration: We set the rate_limit by a second 2023-05-15 13:44:07 +02:00
options.h migration: max_postcopy_bandwidth is a size parameter 2023-05-05 01:04:33 +02:00
page_cache.c migration: Fix cache_init()'s "Failed to allocate" error messages 2021-02-08 11:19:51 +00:00
page_cache.h migration: Clean up signed vs. unsigned XBZRLE cache-size 2021-02-08 11:19:51 +00:00
postcopy-ram.c migration: Drop unused parameter for migration_tls_client_create() 2023-05-03 11:24:20 +02:00
postcopy-ram.h migration: Allow postcopy_ram_supported_by_host() to report err 2023-04-27 10:18:25 +02:00
qemu-file.c qemu-file: Remove total from qemu_file_total_transferred_*() 2023-05-15 13:46:14 +02:00
qemu-file.h qemu-file: Remove total from qemu_file_total_transferred_*() 2023-05-15 13:46:14 +02:00
ram-compress.c ram-compress.c: Make target independent 2023-05-08 15:25:26 +02:00
ram-compress.h ram.c: Move core decompression code into its own file 2023-05-08 15:25:26 +02:00
ram.c ram: Let colo_flush_ram_cache take the bitmap_mutex 2023-05-10 18:48:11 +02:00
ram.h ram: Add public helper to set colo bitmap 2023-05-10 18:48:11 +02:00
rdma.c migration: split migration_incoming_co 2023-05-18 18:40:51 +02:00
rdma.h migration: Export rdma.c functions in its own file 2017-06-01 18:49:23 +02:00
savevm.c qemu-file: Remove total from qemu_file_total_transferred_*() 2023-05-15 13:46:14 +02:00
savevm.h migration: Rename res_{postcopy,precopy}_only 2023-02-15 20:04:30 +01:00
socket.c migration: Move migrate_use_zero_copy_send() to options.c 2023-04-24 15:01:46 +02:00
socket.h migration: Postcopy preemption preparation on channel creation 2022-07-20 12:15:08 +01:00
target.c migration: fix populate_vfio_info 2023-03-16 16:07:07 +01:00
threadinfo.c migration: Introduce interface query-migrationthreads 2023-02-06 19:22:57 +01:00
threadinfo.h migration: Introduce interface query-migrationthreads 2023-02-06 19:22:57 +01:00
tls.c migration: Drop unused parameter for migration_tls_client_create() 2023-05-03 11:24:20 +02:00
tls.h migration: Drop unused parameter for migration_tls_client_create() 2023-05-03 11:24:20 +02:00
trace-events migration/calc-dirty-rate: replaced CRC32 with xxHash 2023-05-15 10:33:03 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vmstate-types.c Move CPU softfloat unions to cpu-float.h 2022-04-06 14:31:43 +02:00
vmstate.c qemu-file: Remove total from qemu_file_total_transferred_*() 2023-05-15 13:46:14 +02:00
xbzrle.c migration/xbzrle: Use __attribute__((target)) for avx512 2023-05-02 13:05:45 -07:00
xbzrle.h AVX512 support for xbzrle_encode_buffer 2023-02-11 16:51:09 +01:00
yank_functions.c migration: Move the yank unregister of channel_close out 2021-07-26 12:45:03 +01:00
yank_functions.h migration: Move the yank unregister of channel_close out 2021-07-26 12:45:03 +01:00