[libvirt] [PATCHv5 06/23] blockjob: enhance xml to track mirrors across libvirtd restart
Jiri Denemark
jdenemar at redhat.com
Wed Apr 18 14:23:19 UTC 2012
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
More information about the libvir-list
mailing list