Blocking writes ensure that the mirroring converges even when the guest is I/O intensive with a fast local storage and slow mirror. This patchset does it by introducing flags which use the blocking mode as it will have performance impact, and for guests which do I/O in bursts it might be detrimental to their performance. One could argue that both the copy job and migration have the expectations of actually using the copy so ensuring that it converges might be also something we'd want to do by default. This would obviously greatly simplify this series, but I didn't want to change the default. Peter Krempa (17): qemu: monitor: Avoid ternary operators in helpers for drive/blockdev-mirror qemuMonitorJSONHandleShutdown: Use virTristateBoolFromBool qemuMonitorJSONEjectMedia: Use a bool directly for constructing JSON with 'b' modifier qemuMonitorJSONMigrate: Extract flags prior to constructing command qemuMonitorJSONGraphicsRelocate: Clean up command argument construction qemu: monitor: Add support for 'write-blocking' copy mode for blockdev-mirror include: virDomainBlockCopyFlags: Convert to prefix comments virDomainBlockCopy: Introduce VIR_DOMAIN_BLOCK_COPY_SYNCHRONOUS_WRITES flag qemuDomainBlockCopy: Implement VIR_DOMAIN_BLOCK_COPY_SYNCHRONOUS_WRITES include: virDomainMigrateFlags: Remove "block alignment" whitespace man: virsh: Separate paragrapsh describing distinct flags VIR_REQUIRE_FLAG_(GOTO|RET): Add parens around arguments in expansion virDomainMigrate: Introduce VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES flag qemu: migration: Implement VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES docs: Convert 'migration' doc to RST docs: migration: Add a paragraph about non-shared storage migration NEWS: Mention synchronous copy job additions NEWS.rst | 12 + docs/manpages/virsh.rst | 45 +- docs/meson.build | 2 +- docs/migration.html.in | 688 ------------------------------- docs/migration.rst | 490 ++++++++++++++++++++++ include/libvirt/libvirt-domain.h | 63 +-- src/internal.h | 4 +- src/libvirt-domain.c | 26 ++ src/qemu/qemu_driver.c | 17 +- src/qemu/qemu_migration.c | 17 +- src/qemu/qemu_migration.h | 1 + src/qemu/qemu_monitor.c | 10 +- src/qemu/qemu_monitor.h | 3 +- src/qemu/qemu_monitor_json.c | 67 ++- src/qemu/qemu_monitor_json.h | 3 +- tests/qemumonitorjsontest.c | 2 +- tools/virsh-domain.c | 22 +- 17 files changed, 707 insertions(+), 765 deletions(-) delete mode 100644 docs/migration.html.in create mode 100644 docs/migration.rst -- 2.31.1