qemu-cr16/migration
Juraj Marcin 468a7effde migration: Refactor all incoming cleanup info migration_incoming_destroy()
Currently, there are two functions that are responsible for calling the
cleanup of the incoming migration state. With successful precopy, it's
the incoming migration coroutine, and with successful postcopy it's the
postcopy listen thread. However, if postcopy fails during in the device
load, both functions will try to do the cleanup.

This patch refactors all cleanup that needs to be done on the incoming
side into a common function and defines a clear boundary, who is
responsible for the cleanup. The incoming migration coroutine is
responsible for calling the cleanup function, unless the listen thread
has been started, in which case the postcopy listen thread runs the
incoming migration cleanup in its BH.

Signed-off-by: Juraj Marcin <jmarcin@redhat.com>
Fixes: 9535435795 ("migration: push Error **errp into qemu_loadvm_state()")
Reviewed-by: Peter Xu <peterx@redhat.com>
Link: https://lore.kernel.org/r/20251103183301.3840862-6-jmarcin@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
2025-11-03 16:04:10 -05:00
..
block-active.c migration/block-active: Remove global active flag 2025-02-06 14:26:51 +01:00
block-dirty-bitmap.c migration: Rename save_live_complete_precopy to save_complete 2025-07-11 10:37:36 -03:00
channel-block.c migration: add FEATURE_SEEKABLE to QIOChannelBlock 2025-11-03 16:04:09 -05:00
channel-block.h migration: introduce a QIOChannel impl for BlockDriverState VMState 2022-06-22 19:33:43 +01:00
channel.c migration: Properly wait on G_IO_IN when peeking messages 2025-11-03 16:04:10 -05: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-stubs.c migration/colo: make colo_incoming_co() return void 2024-05-22 17:34:31 -03:00
colo.c migration: Update qemu_file_get_return_path() docs and remove dead checks 2025-10-03 09:48:02 -04:00
cpr-exec.c migration/cpr: Fix UAF in cpr_exec_cb() when execvp() fails 2025-11-03 16:04:09 -05:00
cpr-transfer.c migration: Support fd-based socket address in cpr_transfer_input 2025-06-23 16:03:59 -04:00
cpr.c migration/cpr: Fix coverity report in cpr_exec_persist_state() 2025-11-03 16:04:09 -05:00
cpu-throttle.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
dirtyrate.c include/system: Move exec/ramblock.h to system/ramblock.h 2025-04-23 14:08:26 -07:00
dirtyrate.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
exec.c migration: simplify exec migration functions 2024-03-04 07:12:40 +01:00
exec.h migration: convert exec backend to accept MigrateAddress. 2023-11-02 11:35:04 +01:00
fd.c migration: Allow pipes to keep working for fd migrations 2024-11-25 16:21:55 -05:00
fd.h migration: Revert mapped-ram multifd support to fd: URI 2024-03-22 12:12:08 -04:00
file.c include/system: Move exec/ramblock.h to system/ramblock.h 2025-04-23 14:08:26 -07:00
file.h migration/multifd: Pass in MultiFDPages_t to file_write_ramblock_iov 2024-09-03 16:24:35 -03:00
global_state.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
meson.build migration: cpr-exec save and load 2025-10-03 09:48:02 -04:00
migration-hmp-cmds.c migration/cpr: Document obscure usage of g_autofree when parse str 2025-11-03 16:04:10 -05:00
migration-stats.c migration: migration_rate_limit_reset() don't need the QEMUFile 2023-10-31 08:44:33 +01:00
migration-stats.h migration: Remove transferred atomic counter 2023-10-31 08:44:33 +01:00
migration.c migration: Refactor all incoming cleanup info migration_incoming_destroy() 2025-11-03 16:04:10 -05:00
migration.h migration: Refactor all incoming cleanup info migration_incoming_destroy() 2025-11-03 16:04:10 -05:00
multifd-device-state.c migration: Rename save_live_complete_precopy_thread to save_complete_precopy_thread 2025-07-11 10:37:39 -03:00
multifd-nocomp.c migration: enable multifd and postcopy together 2025-05-20 11:26:32 -04:00
multifd-qatzip.c include/system: Move exec/ramblock.h to system/ramblock.h 2025-04-23 14:08:26 -07:00
multifd-qpl.c include/system: Move exec/ramblock.h to system/ramblock.h 2025-04-23 14:08:26 -07:00
multifd-uadk.c include/system: Move exec/ramblock.h to system/ramblock.h 2025-04-23 14:08:26 -07:00
multifd-zero-page.c migration: write zero pages when postcopy enabled 2025-05-20 11:26:32 -04:00
multifd-zlib.c include/system: Move exec/ramblock.h to system/ramblock.h 2025-04-23 14:08:26 -07:00
multifd-zstd.c include/system: Move exec/ramblock.h to system/ramblock.h 2025-04-23 14:08:26 -07:00
multifd.c migration/multifd/tls: Cleanup BYE message processing on sender side 2025-10-03 09:48:02 -04:00
multifd.h migration/multifd: move macros to multifd header 2025-05-02 11:09:36 -04:00
options.c migration: mapped-ram: handle zero pages 2025-11-03 16:04:09 -05:00
options.h migration/savevm: Add a compatibility check for capabilities 2025-11-03 16:04:09 -05: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: Refactor all incoming cleanup info migration_incoming_destroy() 2025-11-03 16:04:10 -05:00
postcopy-ram.h migration: Introduce postcopy incoming setup and cleanup functions 2025-11-03 16:04:10 -05:00
qemu-file.c io: Add qio_channel_wait_cond() helper 2025-11-03 16:04:10 -05:00
qemu-file.h migration: qemu_file_set_blocking(): add errp parameter 2025-09-19 12:46:07 +01:00
ram.c migration: mapped-ram: handle zero pages 2025-11-03 16:04:09 -05:00
ram.h migration: push Error **errp into loadvm_process_enable_colo() 2025-10-03 09:48:02 -04:00
rdma.c migration/rdma: Remove qemu_rdma_broken_ipv6_kernel 2025-05-02 11:09:36 -04:00
rdma.h migration: Unfold control_save_page() 2025-05-02 11:09:36 -04:00
savevm.c migration: Introduce postcopy incoming setup and cleanup functions 2025-11-03 16:04:10 -05:00
savevm.h migration: push Error **errp into qemu_loadvm_state_main() 2025-10-03 09:48:02 -04:00
socket.c migration: Remove unused socket_send_channel_create_sync 2024-10-08 15:28:55 -04:00
socket.h migration: Remove unused socket_send_channel_create_sync 2024-10-08 15:28:55 -04:00
threadinfo.c migration/multifd: Protect accesses to migration_threads 2023-07-26 10:55:56 +02:00
threadinfo.h migration/multifd: Protect accesses to migration_threads 2023-07-26 10:55:56 +02:00
tls.c migration: activate TLS thread safety workaround 2025-07-22 19:39:30 -03:00
tls.h migration/multifd: Terminate the TLS connection 2025-02-14 15:19:04 -03:00
trace-events migration: Refactor all incoming cleanup info migration_incoming_destroy() 2025-11-03 16:04:10 -05:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vfio-stub.c migration/vfio: compile only once 2025-09-02 17:57:05 +02:00
vfio.c migration/vfio: compile only once 2025-09-02 17:57:05 +02:00
vmstate-types.c migration: cpr-exec mode 2025-10-03 09:48:02 -04:00
vmstate.c migration: vmsd errp handlers: return bool 2025-11-03 16:04:10 -05:00
xbzrle.c migration/xbzrle: Use i386 host/cpuinfo.h 2023-05-23 16:51:18 -07:00
xbzrle.h migration/xbzrle: Use i386 host/cpuinfo.h 2023-05-23 16:51:18 -07:00
yank_functions.c migration/yank: Use channel features 2024-01-29 11:02:12 +08:00
yank_functions.h migration: Move the yank unregister of channel_close out 2021-07-26 12:45:03 +01:00