qemu-e2k/migration
Dr. David Alan Gilbert 552de79bfd migration: Read state once
The 'status' field for the migration is updated normally using
an atomic operation from the migration thread.
Most readers of it aren't that careful, and in most cases it doesn't
matter.

In query_migrate->fill_source_migration_info the 'state'
is read twice; the first time to decide which state fields to fill in,
and then secondly to copy the state to the status field; that can end up
with a status that's inconsistent; e.g. setting up the fields
for 'setup' and then having an 'active' status.  In that case
libvirt gets upset by the lack of ram info.
The symptom is:
   libvirt.libvirtError: internal error: migration was active, but no RAM info was set

Read the state exactly once in fill_source_migration_info.

This is a possible fix for:
https://bugzilla.redhat.com/show_bug.cgi?id=2074205

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20220413113329.103696-1-dgilbert@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2022-04-21 19:36:46 +01:00
..
block-dirty-bitmap.c
block.c block: rename bdrv_invalidate_cache_all, blk_invalidate_cache and test_sync_op_invalidate_cache 2022-03-04 18:14:40 +01:00
block.h
channel.c migration: Postpone releasing MigrationState.hostname 2022-04-21 19:36:46 +01:00
channel.h
colo-failover.c
colo.c COLO: Move some trace code behind qemu_mutex_unlock_iothread() 2021-12-15 10:31:42 +01:00
dirtyrate.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
dirtyrate.h
exec.c
exec.h
fd.c
fd.h
global_state.c
meson.build configure, meson: move block layer options to meson_options.txt 2022-02-21 10:35:53 +01:00
migration.c migration: Read state once 2022-04-21 19:36:46 +01:00
migration.h migration: Allow migrate-recover to run multiple times 2022-04-21 19:36:46 +01:00
multifd-zlib.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
multifd-zstd.c multifd: recv side only needs the RAMBlock host address 2022-01-28 15:38:23 +01:00
multifd.c migration: Move migrate_allow_multifd and helpers into migration.c 2022-04-21 19:36:46 +01:00
multifd.h migration: Move migrate_allow_multifd and helpers into migration.c 2022-04-21 19:36:46 +01:00
page_cache.c
page_cache.h
postcopy-ram.c Replace qemu_real_host_page variables with inlined functions 2022-04-06 10:50:38 +02:00
postcopy-ram.h migration: Add postcopy_thread_create() 2022-03-02 18:20:45 +00:00
qemu-file-channel.c
qemu-file-channel.h
qemu-file.c include: Move qemu_madvise() and related #defines to new qemu/madvise.h 2022-02-21 13:30:20 +00:00
qemu-file.h
ram.c migration: Fix operator type 2022-04-21 19:36:46 +01:00
ram.h migration: Export ram_load_postcopy() 2022-04-21 19:36:46 +01:00
rdma.c migration/rdma: set the REUSEADDR option for destination 2022-03-02 18:17:50 +00:00
rdma.h
savevm.c migration: Allow migrate-recover to run multiple times 2022-04-21 19:36:46 +01:00
savevm.h
socket.c
socket.h
target.c
tls.c migration: fix use of TLS PSK credentials with a UNIX socket 2022-04-21 19:36:46 +01:00
tls.h
trace-events migration: Tracepoint change in postcopy-run bottom half 2022-03-02 18:17:56 +00:00
trace.h
vmstate-types.c Move CPU softfloat unions to cpu-float.h 2022-04-06 14:31:43 +02:00
vmstate.c migration: Remove load_state_old and minimum_version_id_old 2022-03-02 18:20:45 +00:00
xbzrle.c
xbzrle.h
yank_functions.c
yank_functions.h