[PATCH 00/17] qemu: Add support for blocking writes for the blockdev-mirror job

Peter Krempa pkrempa at redhat.com
Fri Dec 3 15:01:39 UTC 2021


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




More information about the libvir-list mailing list