[libvirt] [PATCH v5 0/4] fix blockcopy across libvirtd restart, turn on active blockcommit

Eric Blake eblake at redhat.com
Tue Jul 29 04:20:52 UTC 2014


v4 was here:
https://www.redhat.com/archives/libvir-list/2014-June/msg01095.html

Since then: I _finally_ implemented persistent domain updates to
match live changes, by reimplementing how <mirror> is tracked in
XML to be more robust to libvirtd restarts.  In particular, it
fixes a bug in v4 that Adam Litke pointed out where a pivot
commit would emit a ready event for 'active commit' but then a
completed event for plain 'commit'.

Patches 1 and 2 are completely local to blockcopy, and fix a
long-standing bug where it is not robust to libvirtd restarts
(similar to the bug fixed in 60e4944).  They are pre-requisite
to turning on active commit.

Patches 3 and 4 are borderline on whether it is a new feature
or a bug fix.  But consider that commit 47549d5 turned on qemu
feature probing with the intent of getting this in 1.2.7, and
we already missed getting active commit into 1.2.6.  As it is,
patch 4 is very similar to the already-acked counterpart of v4.

Therefore, even though I missed rc1, I'm arguing that this whole
series should be included in rc2 in time for 1.2.7.

Not done yet, but that I'd also like to have in the release if I
can swing it: the new virConnectGetDomainCapabilities API needs
to expose features on whether active commit will work.  Also,
I'd like to fix libvirtd restarts to inspect all existing <mirror>
tags and see if the job completed while libvirtd was offline (that
is, when we miss an event, we should still start up in the correct
state when reconnecting to qemu).

Eric Blake (4):
  blockcopy: add more XML for state tracking
  blockjob: properly track blockcopy xml changes on disk
  blockcommit: track job type in xml
  blockcommit: turn on active commit

 docs/formatdomain.html.in                          |  23 ++-
 docs/schemas/domaincommon.rng                      |  19 ++-
 src/conf/domain_conf.c                             |  56 ++++++-
 src/conf/domain_conf.h                             |  14 +-
 src/qemu/qemu_driver.c                             | 167 ++++++++++++++-------
 src/qemu/qemu_process.c                            |  92 ++++++++++--
 .../qemuxml2argv-disk-active-commit.xml            |  37 +++++
 .../qemuxml2argvdata/qemuxml2argv-disk-mirror.xml  |   8 +-
 .../qemuxml2xmlout-disk-mirror-old.xml             |   4 +-
 tests/qemuxml2xmltest.c                            |   1 +
 10 files changed, 336 insertions(+), 85 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-active-commit.xml

-- 
1.9.3




More information about the libvir-list mailing list