--- src/uml/uml_conf.h | 1 + src/uml/uml_driver.c | 32 ++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/uml/uml_conf.h b/src/uml/uml_conf.h index ff71b45..488c1b7 100644 --- a/src/uml/uml_conf.h +++ b/src/uml/uml_conf.h @@ -63,6 +63,7 @@ struct uml_driver { int inotifyWatch; virCapsPtr caps; + virDomainXMLConfPtr xmlconf; /* Event handling */ virDomainEventStatePtr domainEventState; diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c index 63a807a..ab68a68 100644 --- a/src/uml/uml_driver.c +++ b/src/uml/uml_driver.c @@ -433,7 +433,12 @@ umlStartup(bool privileged, char *base = NULL; char *userdir = NULL; - if (VIR_ALLOC(uml_driver) < 0) + virDomainXMLPrivateDataCallbacks privcb = { + .alloc = umlDomainObjPrivateAlloc, + .free = umlDomainObjPrivateFree, + }; + + if (VIR_ALLOC(uml_driver) < 0) return -1; uml_driver->privileged = privileged; @@ -500,10 +505,11 @@ umlStartup(bool privileged, if ((uml_driver->caps = umlCapsInit()) == NULL) goto out_of_memory; - uml_driver->caps->privateDataAllocFunc = umlDomainObjPrivateAlloc; - uml_driver->caps->privateDataFreeFunc = umlDomainObjPrivateFree; + if (!(uml_driver->xmlconf = virDomainXMLConfNew(&privcb, + NULL))) + goto error; - if ((uml_driver->inotifyFD = inotify_init()) < 0) { + if ((uml_driver->inotifyFD = inotify_init()) < 0) { VIR_ERROR(_("cannot initialize inotify")); goto error; } @@ -537,6 +543,7 @@ umlStartup(bool privileged, if (virDomainObjListLoadAllConfigs(uml_driver->domains, uml_driver->caps, + uml_driver->xmlconf, uml_driver->configDir, uml_driver->autostartDir, 0, 1 << VIR_DOMAIN_VIRT_UML, @@ -592,6 +599,7 @@ umlReload(void) { umlDriverLock(uml_driver); virDomainObjListLoadAllConfigs(uml_driver->domains, uml_driver->caps, + uml_driver->xmlconf, uml_driver->configDir, uml_driver->autostartDir, 0, 1 << VIR_DOMAIN_VIRT_UML, @@ -1055,7 +1063,7 @@ static int umlStartVMDaemon(virConnectPtr conn, * report implicit runtime defaults in the XML, like vnc listen/socket */ VIR_DEBUG("Setting current domain def as transient"); - if (virDomainObjSetDefTransient(driver->caps, vm, true) < 0) { + if (virDomainObjSetDefTransient(driver->caps, driver->xmlconf, vm, true) < 0) { VIR_FORCE_CLOSE(logfd); return -1; } @@ -1088,7 +1096,7 @@ static int umlStartVMDaemon(virConnectPtr conn, (ret = umlProcessAutoDestroyAdd(driver, vm, conn)) < 0) goto cleanup; - ret = virDomainObjSetDefTransient(driver->caps, vm, false); + ret = virDomainObjSetDefTransient(driver->caps, driver->xmlconf, vm, false); cleanup: VIR_FORCE_CLOSE(logfd); virCommandFree(cmd); @@ -1495,13 +1503,13 @@ static virDomainPtr umlDomainCreate(virConnectPtr conn, const char *xml, virCheckFlags(VIR_DOMAIN_START_AUTODESTROY, NULL); umlDriverLock(driver); - if (!(def = virDomainDefParseString(driver->caps, xml, - 1 << VIR_DOMAIN_VIRT_UML, + if (!(def = virDomainDefParseString(driver->caps, driver->xmlconf, + xml, 1 << VIR_DOMAIN_VIRT_UML, VIR_DOMAIN_XML_INACTIVE))) goto cleanup; if (!(vm = virDomainObjListAdd(driver->domains, - driver->caps, + driver->xmlconf, def, VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE, NULL))) @@ -1916,13 +1924,13 @@ static virDomainPtr umlDomainDefine(virConnectPtr conn, const char *xml) { virDomainPtr dom = NULL; umlDriverLock(driver); - if (!(def = virDomainDefParseString(driver->caps, xml, - 1 << VIR_DOMAIN_VIRT_UML, + if (!(def = virDomainDefParseString(driver->caps, driver->xmlconf, + xml, 1 << VIR_DOMAIN_VIRT_UML, VIR_DOMAIN_XML_INACTIVE))) goto cleanup; if (!(vm = virDomainObjListAdd(driver->domains, - driver->caps, + driver->xmlconf, def, 0, NULL))) goto cleanup; -- 1.8.1.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list