qemu-server/test
Fiona Ebner 60e1b142fb migration: avoid crash with heavy IO on local VM disk
There is a possibility that the drive-mirror job is not yet done when
the migration wants to inactivate the source's blockdrives:

> bdrv_co_write_req_prepare: Assertion `!(bs->open_flags & BDRV_O_INACTIVE)' failed.

This can be prevented by using the 'write-blocking' copy mode (also
called active mode) for the mirror. However, with active mode, the
guest write speed is limited by the synchronous writes to the mirror
target. For this reason, a way to start out in the faster 'background'
mode and later switch to active mode was introduced in QEMU 8.2.

The switch is done once the mirror job for all drives is ready to be
completed to reduce the time spent where guest IO is limited.

The loop waiting for actively-synced to become true is not an endless
loop: Once the remaining dirty parts have been mirrored by the
background iteration, the actively-synced flag will be set. Because
the 'block-job-change' QMP command already succeeded, new writes will
be done synchronously to the target and thus not lead to new dirty
parts. If the job fails or vanishes (shouldn't actually happen,
because auto-dismiss is false), the loop will be exited and the error
propagated.

Reported rarely, but steadily over the years:
https://forum.proxmox.com/threads/78954/post-353651
https://forum.proxmox.com/threads/78954/post-380015
https://forum.proxmox.com/threads/100020/post-431660
https://forum.proxmox.com/threads/111831/post-482425
https://forum.proxmox.com/threads/111831/post-499807
https://forum.proxmox.com/threads/137849/

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2024-07-30 21:19:51 +02:00
..
cfg2cmd fix #3352: templates: minimize config when starting templates 2024-07-01 10:48:27 +02:00
MigrationTest migration: avoid crash with heavy IO on local VM disk 2024-07-30 21:19:51 +02:00
ovf_manifests test: add test for OVF with missing default rasd namespace 2020-04-27 13:09:51 +02:00
restore-config-expected test: add tests for restoring config 2021-04-18 18:10:28 +02:00
restore-config-input test: add tests for restoring config 2021-04-18 18:10:28 +02:00
snapshot-expected tests: use valid machine types for snapshot tests 2023-08-17 13:37:57 +02:00
snapshot-input tests: use valid machine types for snapshot tests 2023-08-17 13:37:57 +02:00
Makefile tests: fix invoking migration tests with make 2023-05-22 15:51:58 +02:00
run_config2command_tests.pl test: add tests with multiple IDE CD-ROM drives 2023-07-20 12:20:25 +02:00
run_ovf_tests.pl test: add test for OVF with missing default rasd namespace 2020-04-27 13:09:51 +02:00
run_pci_addr_checks.pl move qemu-configs to own directory 2019-09-24 18:59:35 +02:00
run_qemu_img_convert_tests.pl fix #4249: make image clone or conversion respect bandwidth limit 2023-02-23 17:09:51 +01:00
run_qemu_migrate_tests.pl tests: add migration alias check 2023-06-21 12:48:11 +02:00
run_qemu_restore_config_tests.pl test: unbreak restore_config_test 2021-06-23 12:27:54 +02:00
run_snapshot_tests.pl tests: exit with -1 in case of failures 2017-05-17 13:58:18 +02:00
snapshot-test.pm tests: use valid machine types for snapshot tests 2023-08-17 13:37:57 +02:00
test_get_replicatable_volumes.pl grammar fix: s/does not exists/does not exist/g 2019-12-13 12:20:56 +01:00
test.vmdk fix #2395: refactor qemu_img_convert to accept files as source 2019-10-17 13:57:21 +02:00