qemu-cr16/tests
Peter Xu 4881411136 migration: Always set DEVICE state
DEVICE state was introduced back in 2017:

https://lore.kernel.org/qemu-devel/20171020090556.18631-1-dgilbert@redhat.com/

Quote from Dave's cover letter, when the pre-switchover phase was enabled,
the state transition looks like this:

  The precopy flow is:
  active->pre-switchover->device->completed

  The postcopy flow is:
  active->pre-switchover->postcopy-active->completed

To supplement above, when the cap is not enabled:

  The precopy flow is:
  active->completed

  The postcopy flow is:
  active->postcopy-active->completed

It works for us, though we have some code just to special case these state
transitions, so the DEVICE state currently is special only to precopy, and
only conditionally.

I had a quick discussion with Libvirt developers, it turns out that this
may not be necessary. IOW, it seems okay we can have DEVICE state to be
generic, so that we don't have over-complicated state machines.  It not
only helps align all the migration state machine, help cleanup the code
path especially on pre-switchover handling (see the patch itself), another
side benefit is we can unconditionally have a specific state to mark the
switchover phase, which might be helpful for debugging too.

This patch makes the DEVICE state to be present always, marking that source
QEMU is switching over.  Then the state machine will be always as simple
as:

  active-> [pre-switchover->] -> device -> [postcopy-active->] -> complete

After the change, no matter whether pre-switchover or postcopy is enabled
or not, we always have DEVICE state showing the switchover phase.  When
pre-switchover enabled, we'll have an extra stage before that.  When
postcopy is enabled, we'll have an extra stage after that.

A few qtests need touch up in QEMU tree for this change:

  - A few iotest outputs (194, 203, 234, 262, 280)
  - Teach libqos's migrate() on "device" state

Cc: Jiri Denemark <jdenemar@redhat.com>
Cc: Daniel P. Berrangé <berrange@redhat.com>
Cc: Dr. David Alan Gilbert <dave@treblig.org>
Signed-off-by: Peter Xu <peterx@redhat.com>
Tested-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Juraj Marcin <jmarcin@redhat.com>
Link: https://lore.kernel.org/r/20250114230746.3268797-15-peterx@redhat.com
Signed-off-by: Fabiano Rosas <farosas@suse.de>
2025-01-29 11:56:41 -03:00
..
avocado tests/functional: Convert the kvm_xen_guest avocado test 2025-01-22 08:28:49 +01:00
bench tests/bench: Rename test_akcipher_keys.inc -> test_akcipher_keys.c.inc 2024-09-20 10:08:24 +03:00
data target/riscv: add shgatpa 2025-01-19 09:44:34 +10:00
decode
docker dockerfiles: Remove 'MAINTAINER' entry in debian-tricore-cross.docker 2025-01-11 11:22:01 +00:00
fp tests/fp: Set default NaN pattern explicitly 2024-12-11 15:31:04 +00:00
functional test/functional: Update buildroot images to 2024.11 2025-01-27 09:38:15 +01:00
guest-debug tests/tcg: Stop using exit() in the gdbstub testcases 2024-11-18 15:54:34 +00:00
image-fuzzer
include
keys
lcitool tests/lcitool: remove temp workaround for debian mips64el 2025-01-11 11:22:01 +00:00
migration-stress tests/migration: Disambiguate guestperf vs. a-b 2024-12-12 10:25:39 -03:00
multiboot
perf/block/qcow2
qapi-schema tests/qapi-schema: Drop temporary 'prefix' 2024-09-10 13:22:47 +02:00
qemu-iotests migration: Always set DEVICE state 2025-01-29 11:56:41 -03:00
qtest migration: Always set DEVICE state 2025-01-29 11:56:41 -03:00
rocker
tcg plugins: enable linking with clang/lld 2025-01-17 10:45:32 +00:00
tsan
uefi-test-tools tests/data/uefi-boot-images: Add RISC-V ISO image 2024-07-03 18:14:06 -04:00
unit Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
vm tests/vm: allow interactive login as root 2025-01-11 11:22:01 +00:00
vmstate-static-checker-data
dbus-vmstate-daemon.sh
Makefile.include tests/functional: enable pre-emptive caching of assets 2024-09-04 10:52:29 +02:00
meson.build tests/migration: Disambiguate guestperf vs. a-b 2024-12-12 10:25:39 -03:00
test-qht-par.c
vhost-user-bridge.c