qemu-e2k/migration
Peter Xu 5e77343113 migration: Postpone the kick of the fault thread after recover
The new migrate_send_rp_req_pages_pending() call should greatly improve
destination responsiveness because it will resync faulted address after
postcopy recovery.  However it is also the 1st place to initiate the page
request from the main thread.

One thing is overlooked on that migrate_send_rp_message_req_pages() is not
designed to be thread-safe.  So if we wake the fault thread before syncing all
the faulted pages in the main thread, it means they can race.

Postpone the wake up operation after the sync of faulted addresses.

Fixes: 0c26781c09 ("migration: Sync requested pages after postcopy recovery")
Tested-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20201102153010.11979-3-peterx@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2020-11-02 18:25:48 +00:00
..
block-dirty-bitmap.c migration/block-dirty-bitmap: fix uninitialized variable warning 2020-10-26 06:56:24 -05:00
block.c migration: using trace_ to replace DPRINTF 2020-10-26 16:15:04 +00:00
block.h migration: disable auto-converge during bulk block migration 2017-09-27 11:27:14 +01:00
channel.c migration/tls: save hostname into MigrationState 2020-09-25 12:45:58 +01:00
channel.h migration: Route errors down through migration_channel_connect 2018-02-06 10:55:12 +00:00
colo-failover.c qemu/atomic.h: rename atomic_ to qatomic_ 2020-09-23 16:07:44 +01:00
colo.c error: Remove NULL checks on error_propagate() calls (again) 2020-10-09 08:36:23 +02:00
dirtyrate.c Trivial Patches Pull request 20201013 2020-10-13 14:06:22 +01:00
dirtyrate.h migration/dirtyrate: Implement set_sample_page_period() and is_sample_period_valid() 2020-09-25 12:45:58 +01:00
exec.c migration: unify incoming processing 2018-07-10 12:48:53 +01: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: Move the creation of the library to the main meson.build 2020-10-12 11:50:20 -04:00
migration.c qapi: Add VFIO devices migration stats in Migration stats 2020-11-01 12:30:51 -07:00
migration.h migration: Maintain postcopy faulted addresses 2020-10-26 16:15:04 +00:00
multifd-zlib.c multifd: Add zlib compression multifd support 2020-02-28 09:24:43 +01:00
multifd-zstd.c multifd: Add zstd compression multifd support 2020-02-28 09:25:49 +01:00
multifd.c Trivial Patches Pull request 20200928 2020-09-28 14:03:09 +01:00
multifd.h migration/tls: add tls_hostname into MultiFDSendParams 2020-09-25 12:45:58 +01:00
page_cache.c migration: using trace_ to replace DPRINTF 2020-10-26 16:15:04 +00:00
page_cache.h migration: Make cache_init() take an error parameter 2017-10-23 18:03:25 +02:00
postcopy-ram.c migration: Unify reset of last_rb on destination node when recover 2020-11-02 18:25:39 +00:00
postcopy-ram.h migration/: fix some comment spelling errors 2020-09-17 20:36:32 +02:00
qemu-file-channel.c Header cleanup patches for 2019-08-13 2019-08-16 14:53:43 +01:00
qemu-file-channel.h migration: Export qemu-file-channel.c functions in its own file 2017-05-18 19:20:50 +02:00
qemu-file.c osdep: Make MIN/MAX evaluate arguments only once 2020-06-26 09:39:39 -04:00
qemu-file.h Header cleanup patches for 2019-08-13 2019-08-16 14:53:43 +01:00
qjson.c qobject: Replace qobject_incref/QINCREF qobject_decref/QDECREF 2018-05-04 08:27:53 +02:00
qjson.h migration: fix vmdesc leak on vmstate_save() error 2019-09-25 15:51:19 +01:00
ram.c migration: Do not initialise statics and globals to 0 or NULL 2020-10-26 16:15:04 +00:00
ram.h migration/dirtyrate: move RAMBLOCK_FOREACH_MIGRATABLE into ram.h 2020-09-25 12:45:57 +01:00
rdma.c migration: Delete redundant spaces 2020-10-26 16:15:04 +00:00
rdma.h migration: Export rdma.c functions in its own file 2017-06-01 18:49:23 +02:00
savevm.c migration: Postpone the kick of the fault thread after recover 2020-11-02 18:25:48 +00:00
savevm.h migration: Optimization about wait-unplug migration state 2020-02-13 10:53:10 +01:00
socket.c migration: unify the framework of socket-type channel 2020-08-28 13:34:52 +01:00
socket.h migration: unify the framework of socket-type channel 2020-08-28 13:34:52 +01:00
tls.c migration/tls: extract migration_tls_client_create for common-use 2020-09-25 12:45:58 +01:00
tls.h migration/tls: extract migration_tls_client_create for common-use 2020-09-25 12:45:58 +01:00
trace-events migration: Sync requested pages after postcopy recovery 2020-10-26 16:15:04 +00:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vmstate-types.c migration: Drop unused VMSTATE_FLOAT64 support 2020-10-26 16:15:04 +00:00
vmstate.c migration: Add spaces around operator 2020-10-26 16:15:04 +00:00
xbzrle.c migration: Create migration/xbzrle.h 2017-05-18 18:04:54 +02:00
xbzrle.h migration: Create migration/xbzrle.h 2017-05-18 18:04:54 +02:00