[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