---
src/qemu/qemu_command.c | 9 ++--
src/qemu/qemu_command.h | 3 ++
src/qemu/qemu_conf.c | 10 ++--
src/qemu/qemu_conf.h | 4 ++
src/qemu/qemu_domain.c | 58 +++++++++-------------
src/qemu/qemu_domain.h | 6 +--
src/qemu/qemu_driver.c | 123 +++++++++++++++++++++-------------------------
src/qemu/qemu_migration.c | 22 ++++-----
src/qemu/qemu_process.c | 109 +++++++---------------------------------
9 files changed, 130 insertions(+), 214 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 201fac1..1a740dc 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -8562,6 +8562,7 @@ qemuParseCommandLineBootDevs(virDomainDefPtr def, const char *str)
{
* as is practical. This is not an exact science....
*/
virDomainDefPtr qemuParseCommandLine(virCapsPtr qemuCaps,
+ virDomainXMLConfPtr xmlconf,
const char **progenv,
const char **progargv,
char **pidfile,
@@ -9423,7 +9424,7 @@ virDomainDefPtr qemuParseCommandLine(virCapsPtr qemuCaps,
goto error;
if (cmd->num_args || cmd->num_env) {
- def->ns = qemuCaps->ns;
+ def->ns = *virDomainXMLConfGetNamespace(xmlconf);
def->namespaceData = cmd;
}
else
@@ -9449,6 +9450,7 @@ error:
virDomainDefPtr qemuParseCommandLineString(virCapsPtr qemuCaps,
+ virDomainXMLConfPtr xmlconf,
const char *args,
char **pidfile,
virDomainChrSourceDefPtr *monConfig,
@@ -9462,7 +9464,7 @@ virDomainDefPtr qemuParseCommandLineString(virCapsPtr qemuCaps,
if (qemuStringToArgvEnv(args, &progenv, &progargv) < 0)
goto cleanup;
- def = qemuParseCommandLine(qemuCaps, progenv, progargv,
+ def = qemuParseCommandLine(qemuCaps, xmlconf, progenv, progargv,
pidfile, monConfig, monJSON);
cleanup:
@@ -9538,6 +9540,7 @@ cleanup:
}
virDomainDefPtr qemuParseCommandLinePid(virCapsPtr qemuCaps,
+ virDomainXMLConfPtr xmlconf,
pid_t pid,
char **pidfile,
virDomainChrSourceDefPtr *monConfig,
@@ -9557,7 +9560,7 @@ virDomainDefPtr qemuParseCommandLinePid(virCapsPtr qemuCaps,
qemuParseProcFileStrings(pid, "environ", &progenv) < 0)
goto cleanup;
- if (!(def = qemuParseCommandLine(qemuCaps, progenv, progargv,
+ if (!(def = qemuParseCommandLine(qemuCaps, xmlconf, progenv, progargv,
pidfile, monConfig, monJSON)))
goto cleanup;
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
index e4db000..a1214d8 100644
--- a/src/qemu/qemu_command.h
+++ b/src/qemu/qemu_command.h
@@ -167,17 +167,20 @@ int qemuOpenVhostNet(virDomainDefPtr def,
* *must* decide how to fill in a name in this case
*/
virDomainDefPtr qemuParseCommandLine(virCapsPtr qemuCaps,
+ virDomainXMLConfPtr xmlconf,
const char **progenv,
const char **progargv,
char **pidfile,
virDomainChrSourceDefPtr *monConfig,
bool *monJSON);
virDomainDefPtr qemuParseCommandLineString(virCapsPtr qemuCaps,
+ virDomainXMLConfPtr xmlconf,
const char *args,
char **pidfile,
virDomainChrSourceDefPtr *monConfig,
bool *monJSON);
virDomainDefPtr qemuParseCommandLinePid(virCapsPtr qemuCaps,
+ virDomainXMLConfPtr xmlconf,
pid_t pid,
char **pidfile,
virDomainChrSourceDefPtr *monConfig,
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index 3ef3499..1beff6d 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -551,6 +551,13 @@ virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr
driver)
return conf;
}
+virDomainXMLConfPtr
+virQEMUDriverCreateXMLConf(void)
+{
+ return virDomainXMLConfNew(&virQEMUDriverPrivateDataCallbacks,
+ &virQEMUDriverDomainXMLNamespace);
+}
+
virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDriverPtr driver)
{
@@ -573,9 +580,6 @@ virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDriverPtr driver)
caps->defaultDiskDriverType = VIR_STORAGE_FILE_RAW;
}
- qemuDomainSetPrivateDataHooks(caps);
- qemuDomainSetNamespaceHooks(caps);
-
if (virGetHostUUID(caps->host.host_uuid)) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("cannot get the host uuid"));
diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
index 6bb3dee..c5ddaad 100644
--- a/src/qemu/qemu_conf.h
+++ b/src/qemu/qemu_conf.h
@@ -188,6 +188,9 @@ struct _virQEMUDriver {
*/
virCapsPtr caps;
+ /* Immutable pointer, Immutable object */
+ virDomainXMLConfPtr xmlconf;
+
/* Immutable pointer, self-locking APIs */
virQEMUCapsCachePtr qemuCapsCache;
@@ -298,5 +301,6 @@ void qemuSharedDiskEntryFree(void *payload, const void *name)
ATTRIBUTE_NONNULL(1);
int qemuDriverAllocateID(virQEMUDriverPtr driver);
+virDomainXMLConfPtr virQEMUDriverCreateXMLConf(void);
#endif /* __QEMUD_CONF_H */
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 0e56596..2be207f 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -205,7 +205,8 @@ qemuDomainTrackJob(enum qemuDomainJob job)
}
-static void *qemuDomainObjPrivateAlloc(void)
+static void
+*qemuDomainObjPrivateAlloc(void)
{
qemuDomainObjPrivatePtr priv;
@@ -227,7 +228,8 @@ error:
return NULL;
}
-static void qemuDomainObjPrivateFree(void *data)
+static void
+qemuDomainObjPrivateFree(void *data)
{
qemuDomainObjPrivatePtr priv = data;
@@ -256,7 +258,8 @@ static void qemuDomainObjPrivateFree(void *data)
}
-static int qemuDomainObjPrivateXMLFormat(virBufferPtr buf, void *data)
+static int
+qemuDomainObjPrivateXMLFormat(virBufferPtr buf, void *data)
{
qemuDomainObjPrivatePtr priv = data;
const char *monitorpath;
@@ -329,7 +332,8 @@ static int qemuDomainObjPrivateXMLFormat(virBufferPtr buf, void
*data)
return 0;
}
-static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
+static int
+qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data)
{
qemuDomainObjPrivatePtr priv = data;
char *monitorpath;
@@ -482,6 +486,14 @@ error:
}
+virDomainXMLPrivateDataCallbacks virQEMUDriverPrivateDataCallbacks = {
+ .alloc = qemuDomainObjPrivateAlloc,
+ .free = qemuDomainObjPrivateFree,
+ .parse = qemuDomainObjPrivateXMLParse,
+ .format = qemuDomainObjPrivateXMLFormat,
+};
+
+
static void
qemuDomainDefNamespaceFree(void *nsdata)
{
@@ -641,42 +653,25 @@ qemuDomainDefNamespaceHref(void)
}
-void qemuDomainSetPrivateDataHooks(virCapsPtr caps)
-{
- /* Domain XML parser hooks */
- caps->privateDataAllocFunc = qemuDomainObjPrivateAlloc;
- caps->privateDataFreeFunc = qemuDomainObjPrivateFree;
- caps->privateDataXMLFormat = qemuDomainObjPrivateXMLFormat;
- caps->privateDataXMLParse = qemuDomainObjPrivateXMLParse;
-
-}
+virDomainXMLNamespace virQEMUDriverDomainXMLNamespace = {
+ .parse = qemuDomainDefNamespaceParse,
+ .free = qemuDomainDefNamespaceFree,
+ .format = qemuDomainDefNamespaceFormatXML,
+ .href = qemuDomainDefNamespaceHref,
+};
-void qemuDomainSetNamespaceHooks(virCapsPtr caps)
-{
- /* Domain Namespace XML parser hooks */
- caps->ns.parse = qemuDomainDefNamespaceParse;
- caps->ns.free = qemuDomainDefNamespaceFree;
- caps->ns.format = qemuDomainDefNamespaceFormatXML;
- caps->ns.href = qemuDomainDefNamespaceHref;
-}
static void
qemuDomainObjSaveJob(virQEMUDriverPtr driver, virDomainObjPtr obj)
{
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
if (virDomainObjIsActive(obj)) {
- if (virDomainSaveStatus(caps, cfg->stateDir, obj) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, obj) < 0)
VIR_WARN("Failed to save status on vm %s", obj->def->name);
}
-cleanup:
virObjectUnref(cfg);
- virObjectUnref(caps);
}
void
@@ -1782,22 +1777,17 @@ qemuDomainSetFakeReboot(virQEMUDriverPtr driver,
{
qemuDomainObjPrivatePtr priv = vm->privateData;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
if (priv->fakeReboot == value)
goto cleanup;
priv->fakeReboot = value;
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
VIR_WARN("Failed to save status on vm %s", vm->def->name);
cleanup:
virObjectUnref(cfg);
- virObjectUnref(caps);
}
int
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 7dbbaff..3a12b45 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -180,9 +180,6 @@ void qemuDomainEventFlush(int timer, void *opaque);
void qemuDomainEventQueue(virQEMUDriverPtr driver,
virDomainEventPtr event);
-void qemuDomainSetPrivateDataHooks(virCapsPtr caps);
-void qemuDomainSetNamespaceHooks(virCapsPtr caps);
-
int qemuDomainObjBeginJob(virQEMUDriverPtr driver,
virDomainObjPtr obj,
enum qemuDomainJob job)
@@ -340,4 +337,7 @@ void qemuDomainCleanupRemove(virDomainObjPtr vm,
void qemuDomainCleanupRun(virQEMUDriverPtr driver,
virDomainObjPtr vm);
+extern virDomainXMLPrivateDataCallbacks virQEMUDriverPrivateDataCallbacks;
+extern virDomainXMLNamespace virQEMUDriverDomainXMLNamespace;
+
#endif /* __QEMU_DOMAIN_H__ */
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index f4bbd74..8e0abc3 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -441,6 +441,7 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm,
}
def = virDomainSnapshotDefParseString(xmlStr, caps,
+ qemu_driver->xmlconf,
QEMU_EXPECTED_VIRT_TYPES,
flags);
if (def == NULL) {
@@ -722,6 +723,9 @@ qemuStartup(bool privileged,
if ((qemu_driver->caps = virQEMUDriverCreateCapabilities(qemu_driver)) == NULL)
goto error;
+ if (!(qemu_driver->xmlconf = virQEMUDriverCreateXMLConf()))
+ goto error;
+
/* If hugetlbfs is present, then we need to create a sub-directory within
* it, since we can't assume the root mount point has permissions that
* will let our spawned QEMU instances use it.
@@ -763,6 +767,7 @@ qemuStartup(bool privileged,
/* Get all the running persistent or transient configs first */
if (virDomainObjListLoadAllConfigs(qemu_driver->domains,
qemu_driver->caps,
+ qemu_driver->xmlconf,
cfg->stateDir,
NULL,
1, QEMU_EXPECTED_VIRT_TYPES,
@@ -787,6 +792,7 @@ qemuStartup(bool privileged,
/* Then inactive persistent configs */
if (virDomainObjListLoadAllConfigs(qemu_driver->domains,
qemu_driver->caps,
+ qemu_driver->xmlconf,
cfg->configDir,
cfg->autostartDir,
0, QEMU_EXPECTED_VIRT_TYPES,
@@ -860,6 +866,7 @@ qemuReload(void) {
cfg = virQEMUDriverGetConfig(qemu_driver);
virDomainObjListLoadAllConfigs(qemu_driver->domains,
caps,
+ qemu_driver->xmlconf,
cfg->configDir,
cfg->autostartDir,
0, QEMU_EXPECTED_VIRT_TYPES,
@@ -953,6 +960,8 @@ qemuShutdown(void) {
virObjectUnref(qemu_driver->domains);
virObjectUnref(qemu_driver->remotePorts);
+ virObjectUnref(qemu_driver->xmlconf);
+
virSysinfoDefFree(qemu_driver->hostsysinfo);
virObjectUnref(qemu_driver->closeCallbacks);
@@ -1465,7 +1474,7 @@ static virDomainPtr qemuDomainCreate(virConnectPtr conn, const char
*xml,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (!(def = virDomainDefParseString(caps, xml,
+ if (!(def = virDomainDefParseString(caps, driver->xmlconf, xml,
QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
@@ -1483,7 +1492,7 @@ static virDomainPtr qemuDomainCreate(virConnectPtr conn, const char
*xml,
goto cleanup;
if (!(vm = virDomainObjListAdd(driver->domains,
- caps,
+ driver->xmlconf,
def,
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
NULL)))
@@ -1551,7 +1560,6 @@ static int qemuDomainSuspend(virDomainPtr dom) {
int eventDetail;
int state;
virQEMUDriverConfigPtr cfg = NULL;
- virCapsPtr caps = NULL;
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
@@ -1607,9 +1615,7 @@ static int qemuDomainSuspend(virDomainPtr dom) {
eventDetail);
}
}
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto endjob;
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
goto endjob;
ret = 0;
@@ -1623,7 +1629,6 @@ cleanup:
if (event)
qemuDomainEventQueue(driver, event);
- virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
}
@@ -1679,7 +1684,7 @@ static int qemuDomainResume(virDomainPtr dom) {
}
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto endjob;
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
goto endjob;
ret = 0;
@@ -2077,7 +2082,7 @@ static int qemuDomainSetMemoryFlags(virDomainPtr dom, unsigned long
newmem,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto endjob;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto endjob;
@@ -2838,7 +2843,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, virDomainPtr dom,
if (xmlin) {
virDomainDefPtr def = NULL;
- if (!(def = virDomainDefParseString(caps, xmlin,
+ if (!(def = virDomainDefParseString(caps, driver->xmlconf, xmlin,
QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE))) {
goto endjob;
@@ -3752,7 +3757,7 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus,
maximum = (flags & VIR_DOMAIN_VCPU_MAXIMUM) != 0;
flags &= ~VIR_DOMAIN_VCPU_MAXIMUM;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto endjob;
@@ -3858,7 +3863,7 @@ qemuDomainPinVcpuFlags(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -3949,7 +3954,7 @@ qemuDomainPinVcpuFlags(virDomainPtr dom,
if (newVcpuPin)
virDomainVcpuPinDefArrayFree(newVcpuPin, newVcpuPinNum);
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
goto cleanup;
}
@@ -4038,7 +4043,7 @@ qemuDomainGetVcpuPinInfo(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&targetDef) < 0)
goto cleanup;
@@ -4134,7 +4139,7 @@ qemuDomainPinEmulator(virDomainPtr dom,
goto cleanup;
}
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -4215,7 +4220,7 @@ qemuDomainPinEmulator(virDomainPtr dom,
goto cleanup;
}
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
goto cleanup;
}
@@ -4280,8 +4285,8 @@ qemuDomainGetEmulatorPinInfo(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
- &targetDef) < 0)
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf,
+ vm, &flags, &targetDef) < 0)
goto cleanup;
if (flags & VIR_DOMAIN_AFFECT_LIVE)
@@ -4437,7 +4442,8 @@ qemuDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags)
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags, &def) < 0)
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf,
+ vm, &flags, &def) < 0)
goto cleanup;
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
@@ -4749,14 +4755,14 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
header.was_running = state;
/* Create a domain from this XML */
- if (!(def = virDomainDefParseString(caps, xml,
+ if (!(def = virDomainDefParseString(caps, driver->xmlconf, xml,
QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto error;
if (xmlin) {
virDomainDefPtr def2 = NULL;
- if (!(def2 = virDomainDefParseString(caps, xmlin,
+ if (!(def2 = virDomainDefParseString(caps, driver->xmlconf, xmlin,
QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto error;
@@ -4801,10 +4807,6 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
virCommandPtr cmd = NULL;
char *errbuf = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
if ((header->version == 2) &&
(header->compressed != QEMU_SAVE_FORMAT_RAW)) {
@@ -4876,7 +4878,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
"%s", _("failed to resume domain"));
goto cleanup;
}
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Failed to save status on vm %s", vm->def->name);
goto cleanup;
}
@@ -4898,7 +4900,6 @@ cleanup:
if (virSecurityManagerRestoreSavedStateLabel(driver->securityManager,
vm->def, path) < 0)
VIR_WARN("failed to restore save state label on %s", path);
- virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
}
@@ -4917,7 +4918,6 @@ qemuDomainRestoreFlags(virConnectPtr conn,
virQEMUSaveHeader header;
virFileWrapperFdPtr wrapperFd = NULL;
int state = -1;
- virCapsPtr caps = NULL;
virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE |
VIR_DOMAIN_SAVE_RUNNING |
@@ -4929,9 +4929,6 @@ qemuDomainRestoreFlags(virConnectPtr conn,
else if (flags & VIR_DOMAIN_SAVE_PAUSED)
state = 0;
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
-
fd = qemuDomainSaveImageOpen(driver, path, &def, &header,
(flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) != 0,
&wrapperFd, dxml, state, false, false);
@@ -4939,7 +4936,7 @@ qemuDomainRestoreFlags(virConnectPtr conn,
goto cleanup;
if (!(vm = virDomainObjListAdd(driver->domains,
- caps,
+ driver->xmlconf,
def,
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
@@ -4968,7 +4965,6 @@ cleanup:
virFileWrapperFdFree(wrapperFd);
if (vm)
virObjectUnlock(vm);
- virObjectUnref(caps);
return ret;
}
@@ -5221,7 +5217,7 @@ static char *qemuDomainXMLFromNative(virConnectPtr conn,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- def = qemuParseCommandLineString(caps, config,
+ def = qemuParseCommandLineString(caps, driver->xmlconf, config,
NULL, NULL, NULL);
if (!def)
goto cleanup;
@@ -5269,7 +5265,7 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- def = virDomainDefParseString(caps, xmlData,
+ def = virDomainDefParseString(caps, driver->xmlconf, xmlData,
QEMU_EXPECTED_VIRT_TYPES, 0);
if (!def)
goto cleanup;
@@ -5540,7 +5536,7 @@ static virDomainPtr qemuDomainDefine(virConnectPtr conn, const char
*xml) {
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (!(def = virDomainDefParseString(caps, xml,
+ if (!(def = virDomainDefParseString(caps, driver->xmlconf, xml,
QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
@@ -5558,7 +5554,7 @@ static virDomainPtr qemuDomainDefine(virConnectPtr conn, const char
*xml) {
goto cleanup;
if (!(vm = virDomainObjListAdd(driver->domains,
- caps,
+ driver->xmlconf,
def,
0,
&oldDef)))
@@ -6479,7 +6475,7 @@ qemuDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
goto endjob;
/* Make a copy for updated domain. */
- vmdef = virDomainObjCopyPersistentDef(caps, vm);
+ vmdef = virDomainObjCopyPersistentDef(caps, driver->xmlconf, vm);
if (!vmdef)
goto endjob;
switch (action) {
@@ -6530,7 +6526,7 @@ qemuDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
* changed even if we failed to attach the device. For example,
* a new controller may be created.
*/
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
ret = -1;
goto endjob;
}
@@ -6907,7 +6903,7 @@ qemuDomainSetBlkioParameters(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -7072,7 +7068,7 @@ qemuDomainGetBlkioParameters(virDomainPtr dom,
goto cleanup;
}
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -7261,7 +7257,7 @@ qemuDomainSetMemoryParameters(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -7391,7 +7387,7 @@ qemuDomainGetMemoryParameters(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -7557,7 +7553,7 @@ qemuDomainSetNumaParameters(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -7710,7 +7706,7 @@ qemuDomainGetNumaParameters(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -7920,13 +7916,13 @@ qemuSetSchedulerParametersFlags(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&vmdef) < 0)
goto cleanup;
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
/* Make a copy for updated domain. */
- vmdef = virDomainObjCopyPersistentDef(caps, vm);
+ vmdef = virDomainObjCopyPersistentDef(caps, driver->xmlconf, vm);
if (!vmdef)
goto cleanup;
}
@@ -8021,7 +8017,7 @@ qemuSetSchedulerParametersFlags(virDomainPtr dom,
}
}
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
goto cleanup;
@@ -8206,7 +8202,7 @@ qemuGetSchedulerParametersFlags(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -8736,7 +8732,7 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -8902,7 +8898,7 @@ qemuDomainGetInterfaceParameters(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -11207,10 +11203,6 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver,
bool reuse = (flags & VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT) != 0;
virCgroupPtr cgroup = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID,
@@ -11305,11 +11297,10 @@ cleanup:
virCgroupFree(&cgroup);
if (ret == 0 || !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_TRANSACTION)) {
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0 ||
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0 ||
(persist && virDomainSaveConfig(cfg->configDir, vm->newDef)
< 0))
ret = -1;
}
- virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
@@ -11574,7 +11565,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain,
!virDomainObjIsActive(vm))
parse_flags |= VIR_DOMAIN_SNAPSHOT_PARSE_OFFLINE;
- if (!(def = virDomainSnapshotDefParseString(xmlDesc, caps,
+ if (!(def = virDomainSnapshotDefParseString(xmlDesc, caps, driver->xmlconf,
QEMU_EXPECTED_VIRT_TYPES,
parse_flags)))
goto cleanup;
@@ -11750,7 +11741,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain,
/* Easiest way to clone inactive portion of vm->def is via
* conversion in and back out of xml. */
if (!(xml = qemuDomainDefFormatLive(driver, vm->def, true, true)) ||
- !(def->dom = virDomainDefParseString(caps, xml,
+ !(def->dom = virDomainDefParseString(caps, driver->xmlconf, xml,
QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
@@ -12321,7 +12312,7 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr
snapshot,
* than inactive xml? */
snap->def->current = true;
if (snap->def->dom) {
- config = virDomainDefCopy(caps, snap->def->dom, true);
+ config = virDomainDefCopy(caps, driver->xmlconf, snap->def->dom, true);
if (!config)
goto cleanup;
}
@@ -12781,7 +12772,7 @@ static virDomainPtr qemuDomainAttach(virConnectPtr conn,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (!(def = qemuParseCommandLinePid(caps, pid,
+ if (!(def = qemuParseCommandLinePid(caps, driver->xmlconf, pid,
&pidfile, &monConfig, &monJSON)))
goto cleanup;
@@ -12815,7 +12806,7 @@ static virDomainPtr qemuDomainAttach(virConnectPtr conn,
goto cleanup;
if (!(vm = virDomainObjListAdd(driver->domains,
- caps,
+ driver->xmlconf,
def,
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
@@ -13895,7 +13886,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto endjob;
@@ -14055,7 +14046,7 @@ qemuDomainGetBlockIoTune(virDomainPtr dom,
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto endjob;
@@ -14244,7 +14235,7 @@ qemuDomainSetMetadata(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags,
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&persistentDef) < 0)
goto cleanup;
@@ -14341,7 +14332,7 @@ qemuDomainGetMetadata(virDomainPtr dom,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (virDomainLiveConfigHelperMethod(caps, vm, &flags, &def) < 0)
+ if (virDomainLiveConfigHelperMethod(caps, driver->xmlconf, vm, &flags,
&def) < 0)
goto cleanup;
/* use correct domain definition according to flags */
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 4c6d7e1..537b834 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -919,7 +919,8 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig,
n);
goto error;
}
- mig->persistent = virDomainDefParseNode(caps, doc, nodes[0],
+ mig->persistent = virDomainDefParseNode(caps, driver->xmlconf,
+ doc, nodes[0],
-1, VIR_DOMAIN_XML_INACTIVE);
if (!mig->persistent) {
/* virDomainDefParseNode already reported
@@ -1923,7 +1924,7 @@ char *qemuMigrationBegin(virQEMUDriverPtr driver,
}
if (xmlin) {
- if (!(def = virDomainDefParseString(caps, xmlin,
+ if (!(def = virDomainDefParseString(caps, driver->xmlconf, xmlin,
QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
@@ -2025,7 +2026,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
- if (!(def = virDomainDefParseString(caps, dom_xml,
+ if (!(def = virDomainDefParseString(caps, driver->xmlconf, dom_xml,
QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
@@ -2066,7 +2067,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
virDomainDefPtr newdef;
VIR_DEBUG("Using hook-filtered domain XML: %s", xmlout);
- newdef = virDomainDefParseString(caps, xmlout,
+ newdef = virDomainDefParseString(caps, driver->xmlconf, xmlout,
QEMU_EXPECTED_VIRT_TYPES,
VIR_DOMAIN_XML_INACTIVE);
if (!newdef)
@@ -2084,7 +2085,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
}
if (!(vm = virDomainObjListAdd(driver->domains,
- caps,
+ driver->xmlconf,
def,
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
@@ -3883,7 +3884,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
if (mig->persistent)
vm->newDef = vmdef = mig->persistent;
else
- vmdef = virDomainObjGetPersistentDef(caps, vm);
+ vmdef = virDomainObjGetPersistentDef(caps, driver->xmlconf, vm);
if (!vmdef || virDomainSaveConfig(cfg->configDir, vmdef) < 0) {
/* Hmpf. Migration was successful, but making it persistent
* was not. If we report successful, then when this domain
@@ -3978,7 +3979,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
}
if (virDomainObjIsActive(vm) &&
- virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Failed to save status on vm %s", vm->def->name);
goto endjob;
}
@@ -4035,7 +4036,6 @@ int qemuMigrationConfirm(virQEMUDriverPtr driver,
virDomainEventPtr event = NULL;
int rv = -1;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
VIR_DEBUG("driver=%p, conn=%p, vm=%p, cookiein=%s, cookieinlen=%d, "
"flags=%x, retcode=%d",
@@ -4044,9 +4044,6 @@ int qemuMigrationConfirm(virQEMUDriverPtr driver,
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
-
qemuMigrationJobSetPhase(driver, vm,
retcode == 0
? QEMU_MIGRATION_PHASE_CONFIRM3
@@ -4090,7 +4087,7 @@ int qemuMigrationConfirm(virQEMUDriverPtr driver,
event = virDomainEventNewFromObj(vm,
VIR_DOMAIN_EVENT_RESUMED,
VIR_DOMAIN_EVENT_RESUMED_MIGRATED);
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Failed to save status on vm %s", vm->def->name);
goto cleanup;
}
@@ -4103,7 +4100,6 @@ done:
cleanup:
if (event)
qemuDomainEventQueue(driver, event);
- virObjectUnref(caps);
virObjectUnref(cfg);
return rv;
}
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index efb1298..244e4d7 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -641,13 +641,9 @@ qemuProcessHandleShutdown(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
qemuDomainObjPrivatePtr priv;
virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
VIR_DEBUG("vm=%p", vm);
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
-
virObjectLock(vm);
priv = vm->privateData;
@@ -671,7 +667,7 @@ qemuProcessHandleShutdown(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
VIR_DOMAIN_EVENT_SHUTDOWN,
VIR_DOMAIN_EVENT_SHUTDOWN_FINISHED);
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Unable to save status on vm %s after state change",
vm->def->name);
}
@@ -683,10 +679,8 @@ qemuProcessHandleShutdown(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
unlock:
virObjectUnlock(vm);
-cleanup:
if (event)
qemuDomainEventQueue(driver, event);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
@@ -700,10 +694,6 @@ qemuProcessHandleStop(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virQEMUDriverPtr driver = qemu_driver;
virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) {
@@ -727,7 +717,7 @@ qemuProcessHandleStop(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
VIR_WARN("Unable to release lease on %s", vm->def->name);
VIR_DEBUG("Preserving lock state '%s'",
NULLSTR(priv->lockState));
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Unable to save status on vm %s after state change",
vm->def->name);
}
@@ -735,11 +725,8 @@ qemuProcessHandleStop(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
unlock:
virObjectUnlock(vm);
-
-cleanup:
if (event)
qemuDomainEventQueue(driver, event);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
@@ -753,10 +740,6 @@ qemuProcessHandleResume(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virQEMUDriverPtr driver = qemu_driver;
virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_PAUSED) {
@@ -787,7 +770,7 @@ qemuProcessHandleResume(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
}
VIR_FREE(priv->lockState);
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Unable to save status on vm %s after state change",
vm->def->name);
}
@@ -795,10 +778,8 @@ qemuProcessHandleResume(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
unlock:
virObjectUnlock(vm);
-cleanup:
if (event)
qemuDomainEventQueue(driver, event);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
}
@@ -812,10 +793,6 @@ qemuProcessHandleRTCChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virQEMUDriverPtr driver = qemu_driver;
virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
event = virDomainEventRTCChangeNewFromObj(vm, offset);
@@ -823,15 +800,13 @@ qemuProcessHandleRTCChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
if (vm->def->clock.offset == VIR_DOMAIN_CLOCK_OFFSET_VARIABLE)
vm->def->clock.data.variable.adjustment = offset;
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
VIR_WARN("unable to save domain status with RTC change");
virObjectUnlock(vm);
-cleanup:
if (event)
qemuDomainEventQueue(driver, event);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
}
@@ -846,10 +821,6 @@ qemuProcessHandleWatchdog(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainEventPtr watchdogEvent = NULL;
virDomainEventPtr lifecycleEvent = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
watchdogEvent = virDomainEventWatchdogNewFromObj(vm, action);
@@ -869,7 +840,7 @@ qemuProcessHandleWatchdog(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
VIR_WARN("Unable to release lease on %s", vm->def->name);
VIR_DEBUG("Preserving lock state '%s'",
NULLSTR(priv->lockState));
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Unable to save status on vm %s after watchdog event",
vm->def->name);
}
@@ -896,14 +867,11 @@ qemuProcessHandleWatchdog(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
if (vm)
virObjectUnlock(vm);
-
-cleanup:
if (watchdogEvent)
qemuDomainEventQueue(driver, watchdogEvent);
if (lifecycleEvent)
qemuDomainEventQueue(driver, lifecycleEvent);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
}
@@ -924,10 +892,6 @@ qemuProcessHandleIOError(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
const char *devAlias;
virDomainDiskDefPtr disk;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
disk = qemuProcessFindDomainDiskByAlias(vm, diskAlias);
@@ -958,19 +922,17 @@ qemuProcessHandleIOError(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
VIR_WARN("Unable to release lease on %s", vm->def->name);
VIR_DEBUG("Preserving lock state '%s'",
NULLSTR(priv->lockState));
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
VIR_WARN("Unable to save status on vm %s after IO error",
vm->def->name);
}
virObjectUnlock(vm);
-cleanup:
if (ioErrorEvent)
qemuDomainEventQueue(driver, ioErrorEvent);
if (ioErrorEvent2)
qemuDomainEventQueue(driver, ioErrorEvent2);
if (lifecycleEvent)
qemuDomainEventQueue(driver, lifecycleEvent);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
}
@@ -1121,10 +1083,6 @@ qemuProcessHandleTrayChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainEventPtr event = NULL;
virDomainDiskDefPtr disk;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
disk = qemuProcessFindDomainDiskByAlias(vm, devAlias);
@@ -1139,17 +1097,15 @@ qemuProcessHandleTrayChange(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
else if (reason == VIR_DOMAIN_EVENT_TRAY_CHANGE_CLOSE)
disk->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED;
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Unable to save status on vm %s after tray moved event",
vm->def->name);
}
}
virObjectUnlock(vm);
-cleanup:
if (event)
qemuDomainEventQueue(driver, event);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
}
@@ -1162,10 +1118,6 @@ qemuProcessHandlePMWakeup(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainEventPtr event = NULL;
virDomainEventPtr lifecycleEvent = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
event = virDomainEventPMWakeupNewFromObj(vm);
@@ -1183,20 +1135,17 @@ qemuProcessHandlePMWakeup(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
VIR_DOMAIN_EVENT_STARTED,
VIR_DOMAIN_EVENT_STARTED_WAKEUP);
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Unable to save status on vm %s after wakeup event",
vm->def->name);
}
}
virObjectUnlock(vm);
-
-cleanup:
if (event)
qemuDomainEventQueue(driver, event);
if (lifecycleEvent)
qemuDomainEventQueue(driver, lifecycleEvent);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
}
@@ -1209,10 +1158,6 @@ qemuProcessHandlePMSuspend(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virDomainEventPtr event = NULL;
virDomainEventPtr lifecycleEvent = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
event = virDomainEventPMSuspendNewFromObj(vm);
@@ -1229,7 +1174,7 @@ qemuProcessHandlePMSuspend(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
VIR_DOMAIN_EVENT_PMSUSPENDED,
VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY);
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Unable to save status on vm %s after suspend event",
vm->def->name);
}
@@ -1240,12 +1185,10 @@ qemuProcessHandlePMSuspend(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
virObjectUnlock(vm);
-cleanup:
if (event)
qemuDomainEventQueue(driver, event);
if (lifecycleEvent)
qemuDomainEventQueue(driver, lifecycleEvent);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
}
@@ -1258,10 +1201,6 @@ qemuProcessHandleBalloonChange(qemuMonitorPtr mon
ATTRIBUTE_UNUSED,
virQEMUDriverPtr driver = qemu_driver;
virDomainEventPtr event = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
event = virDomainEventBalloonChangeNewFromObj(vm, actual);
@@ -1270,15 +1209,13 @@ qemuProcessHandleBalloonChange(qemuMonitorPtr mon
ATTRIBUTE_UNUSED,
vm->def->mem.cur_balloon, actual);
vm->def->mem.cur_balloon = actual;
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
VIR_WARN("unable to save domain status with balloon change");
virObjectUnlock(vm);
-cleanup:
if (event)
qemuDomainEventQueue(driver, event);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
}
@@ -1291,10 +1228,6 @@ qemuProcessHandlePMSuspendDisk(qemuMonitorPtr mon
ATTRIBUTE_UNUSED,
virDomainEventPtr event = NULL;
virDomainEventPtr lifecycleEvent = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- virCapsPtr caps = NULL;
-
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto cleanup;
virObjectLock(vm);
event = virDomainEventPMSuspendDiskNewFromObj(vm);
@@ -1311,7 +1244,7 @@ qemuProcessHandlePMSuspendDisk(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
VIR_DOMAIN_EVENT_PMSUSPENDED,
VIR_DOMAIN_EVENT_PMSUSPENDED_DISK);
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
VIR_WARN("Unable to save status on vm %s after suspend event",
vm->def->name);
}
@@ -1322,12 +1255,10 @@ qemuProcessHandlePMSuspendDisk(qemuMonitorPtr mon
ATTRIBUTE_UNUSED,
virObjectUnlock(vm);
-cleanup:
if (event)
qemuDomainEventQueue(driver, event);
if (lifecycleEvent)
qemuDomainEventQueue(driver, lifecycleEvent);
- virObjectUnref(caps);
virObjectUnref(cfg);
return 0;
@@ -3179,7 +3110,6 @@ qemuProcessReconnect(void *opaque)
int state;
int reason;
virQEMUDriverConfigPtr cfg;
- virCapsPtr caps = NULL;
size_t i;
memcpy(&oldjob, &data->oldjob, sizeof(oldjob));
@@ -3200,9 +3130,6 @@ qemuProcessReconnect(void *opaque)
* deleted if qemuConnectMonitor() failed */
virObjectRef(obj);
- if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
- goto error;
-
/* XXX check PID liveliness & EXE path */
if (qemuConnectMonitor(driver, obj) < 0)
goto error;
@@ -3282,7 +3209,7 @@ qemuProcessReconnect(void *opaque)
goto error;
/* update domain state XML with possibly updated state in virDomainObj */
- if (virDomainSaveStatus(caps, cfg->stateDir, obj) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, obj) < 0)
goto error;
/* Run an hook to allow admins to do some magic */
@@ -3314,7 +3241,6 @@ endjob:
virConnectClose(conn);
virObjectUnref(cfg);
- virObjectUnref(caps);
return;
@@ -3352,7 +3278,6 @@ error:
}
}
virConnectClose(conn);
- virObjectUnref(caps);
virObjectUnref(cfg);
}
@@ -3539,7 +3464,7 @@ int qemuProcessStart(virConnectPtr conn,
* report implicit runtime defaults in the XML, like vnc listen/socket
*/
VIR_DEBUG("Setting current domain def as transient");
- if (virDomainObjSetDefTransient(caps, vm, true) < 0)
+ if (virDomainObjSetDefTransient(caps, driver->xmlconf, vm, true) < 0)
goto cleanup;
vm->def->id = qemuDriverAllocateID(driver);
@@ -3888,7 +3813,7 @@ int qemuProcessStart(virConnectPtr conn,
}
VIR_DEBUG("Writing early domain status to disk");
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0) {
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0) {
goto cleanup;
}
@@ -4039,7 +3964,7 @@ int qemuProcessStart(virConnectPtr conn,
goto cleanup;
VIR_DEBUG("Writing domain status to disk");
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
goto cleanup;
/* finally we can call the 'started' hook script if any */
@@ -4394,7 +4319,7 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
* report implicit runtime defaults in the XML, like vnc listen/socket
*/
VIR_DEBUG("Setting current domain def as transient");
- if (virDomainObjSetDefTransient(caps, vm, true) < 0)
+ if (virDomainObjSetDefTransient(caps, driver->xmlconf, vm, true) < 0)
goto cleanup;
vm->def->id = qemuDriverAllocateID(driver);
@@ -4538,7 +4463,7 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
virDomainObjSetState(vm, VIR_DOMAIN_PAUSED, reason);
VIR_DEBUG("Writing domain status to disk");
- if (virDomainSaveStatus(caps, cfg->stateDir, vm) < 0)
+ if (virDomainSaveStatus(driver->xmlconf, cfg->stateDir, vm) < 0)
goto cleanup;
/* Run an hook to allow admins to do some magic */
--
1.8.1.5