
On Mon, Apr 16, 2012 at 23:05:57 -0600, Eric Blake wrote:
In order to track a block copy job across libvirtd restarts, we need to save internal XML that tracks the name of the file holding the mirror. Displaying this name in dumpxml might also be useful to the user, even if we don't yet have a way to (re-) start a domain with mirroring enabled up front. This is done with a new <mirror> sub-element to <disk>, as in:
<disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/var/lib/libvirt/images/original.img'/> <mirror file='/var/lib/libvirt/images/copy.img' format='qcow2' ready='yes'/> ... </disk>
For now, the element is output-only, in live domains; it is ignored when defining a domain or hot-plugging a disk (since those contexts use VIR_DOMAIN_XML_INACTIVE in parsing). The 'ready' attribute appears when libvirt knows that the job has changed from the initial pulling phase over to the mirroring phase, although absence of the attribute is not a sure indicator of the current phase. If we come up with a way to make qemu start with mirroring enabled, we can relax the xml restriction, and allow <mirror> (but not attribute 'ready') on input. Testing active-only XML meant tweaking the testsuite slightly, but it was worth it.
* docs/schemas/domaincommon.rng (diskspec): Add diskMirror. * docs/formatdomain.html.in (elementsDisks): Document it. * src/conf/domain_conf.h (_virDomainDiskDef): New members. * src/conf/domain_conf.c (virDomainDiskDefFree): Clean them. (virDomainDiskDefParseXML): Parse them, but only internally. (virDomainDiskDefFormat): Output them. * tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml: New test file. * tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror.xml: Likewise. * tests/qemuxml2xmltest.c (testInfo): Alter members. (testCompareXMLToXMLHelper): Allow more test control. (mymain): Run new test. ---
was 7/18 in v4 v5: allow but ignore <mirror> on inactive, and add tests
docs/formatdomain.html.in | 13 ++++ docs/schemas/domaincommon.rng | 24 +++++++- src/conf/domain_conf.c | 62 +++++++++++++++++--- src/conf/domain_conf.h | 4 + .../qemuxml2argvdata/qemuxml2argv-disk-mirror.xml | 42 +++++++++++++ .../qemuxml2xmlout-disk-mirror.xml | 40 +++++++++++++ tests/qemuxml2xmltest.c | 42 ++++++++------ 7 files changed, 198 insertions(+), 29 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror.xml
OK, looks good as well with the comment from 4/23 applied. BTW, not removing unrelated () would make the patch a bit smaller for review ;-) Jirka