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

Peter Krempa posted 17 patches 2 years, 4 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/cover.1638543496.git.pkrempa@redhat.com
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
[PATCH 00/17] qemu: Add support for blocking writes for the blockdev-mirror job
Posted by Peter Krempa 2 years, 4 months ago
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

Re: [PATCH 00/17] qemu: Add support for blocking writes for the blockdev-mirror job
Posted by Ján Tomko 2 years, 4 months ago
On a Friday in 2021, Peter Krempa wrote:
>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
>

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano