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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list