On 04/21/2011 09:07 PM, KAMEZAWA Hiroyuki wrote: > > Rebased ont the latest git tree, which makes this work easier. s/ont/onto/ > This series adds support for attach/detach/update disks of domain config. > == > This patch adds functions for modify domain's persistent definition. > To do error recovery in easy way, we use a copy of vmdef and update it. > > The whole sequence will be: > > make a copy of domain definition. > > if (flags & MODIFY_CONFIG) > update copied domain definition > if (flags & MODIF_LIVE) > do hotplug. > if (no error) > save copied one to the file and update cached definition. > else > discard copied definition. > > This patch is mixuture of Eric Blake's work and mine. > From: Eric Blake <eblake@xxxxxxxxxx> > Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> > > Changelog: v11 -> v12 > - rebased and fixed hunks. > - renamed qemudDomain....to qemuDomain... > > (virDomainObjCopyPersistentDef): make a copy of persistent vm definition > (qemuDomainAttach/Detach/UpdateDeviceConfig) : callbacks. now empty > (qemuDomainModifyDeviceFlags): add support for MODIFY_CONFIG and MODIFY_CURRENT > --- > src/conf/domain_conf.c | 18 ++++++ > src/conf/domain_conf.h | 3 + > src/libvirt_private.syms | 1 + > src/qemu/qemu_driver.c | 147 ++++++++++++++++++++++++++++++++++++---------- > 4 files changed, 137 insertions(+), 32 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 381e692..6c1098a 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -9509,3 +9509,21 @@ cleanup: > > return ret; > } > + > + > +virDomainDefPtr > +virDomainObjCopyPersistentDef(virCapsPtr caps, virDomainObjPtr dom) > +{ > + char *xml; > + virDomainDefPtr cur, ret; > + > + cur = virDomainObjGetPersistentDef(caps, dom); > + > + xml = virDomainDefFormat(cur, VIR_DOMAIN_XML_WRITE_FLAGS); > + if (!xml) > + return NULL; > + > + ret = virDomainDefParseString(caps, xml, VIR_DOMAIN_XML_READ_FLAGS); Cute. Maybe not the most efficient, but very compact addition :) > + > + return ret; But, it leaks xml. > +} > diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h > index 6ea30b9..ddf111a 100644 > --- a/src/conf/domain_conf.h > +++ b/src/conf/domain_conf.h > @@ -1288,6 +1288,9 @@ int virDomainObjSetDefTransient(virCapsPtr caps, > virDomainDefPtr > virDomainObjGetPersistentDef(virCapsPtr caps, > virDomainObjPtr domain); > +virDomainDefPtr > +virDomainObjCopyPersistentDef(virCapsPtr caps, virDomainObjPtr dom); > + > void virDomainRemoveInactive(virDomainObjListPtr doms, > virDomainObjPtr dom); > > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms > index ba7739d..f732431 100644 > --- a/src/libvirt_private.syms > +++ b/src/libvirt_private.syms > @@ -287,6 +287,7 @@ virDomainMemballoonModelTypeToString; > virDomainNetDefFree; > virDomainNetTypeToString; > virDomainObjAssignDef; > +virDomainObjCopyPersistentDef; > virDomainObjSetDefTransient; > virDomainObjGetPersistentDef; Pre-existing unsorted line. Beyond that, it looks right to me. ACK! I squashed this in, then pushed. diff --git i/src/conf/domain_conf.c w/src/conf/domain_conf.c index 2d413e7..691e50e 100644 --- i/src/conf/domain_conf.c +++ w/src/conf/domain_conf.c @@ -9526,5 +9526,6 @@ virDomainObjCopyPersistentDef(virCapsPtr caps, virDomainObjPtr dom) ret = virDomainDefParseString(caps, xml, VIR_DOMAIN_XML_READ_FLAGS); + VIR_FREE(xml); return ret; } diff --git i/src/libvirt_private.syms w/src/libvirt_private.syms index 52d7b02..579c62f 100644 --- i/src/libvirt_private.syms +++ w/src/libvirt_private.syms @@ -288,7 +288,6 @@ virDomainNetDefFree; virDomainNetTypeToString; virDomainObjAssignDef; virDomainObjCopyPersistentDef; -virDomainObjSetDefTransient; virDomainObjGetPersistentDef; virDomainObjIsDuplicate; virDomainObjListDeinit; @@ -298,6 +297,7 @@ virDomainObjListInit; virDomainObjListNumOfDomains; virDomainObjLock; virDomainObjRef; +virDomainObjSetDefTransient; virDomainObjUnlock; virDomainObjUnref; virDomainRemoveInactive; -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list