mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Simplify the Xen domain start driver method
Directly call either the XenD or XM driver when starting a persistent domain Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
f53ffba6aa
commit
2fc0660848
@ -1344,7 +1344,6 @@ static int
|
|||||||
xenUnifiedDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
|
xenUnifiedDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
|
||||||
{
|
{
|
||||||
xenUnifiedPrivatePtr priv = dom->conn->privateData;
|
xenUnifiedPrivatePtr priv = dom->conn->privateData;
|
||||||
int i;
|
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
char *name = NULL;
|
char *name = NULL;
|
||||||
|
|
||||||
@ -1355,21 +1354,16 @@ xenUnifiedDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virFileExists(name)) {
|
if (virFileExists(name)) {
|
||||||
if (priv->opened[XEN_UNIFIED_XEND_OFFSET]) {
|
ret = xenDaemonDomainRestore(dom->conn, name);
|
||||||
ret = xenDaemonDomainRestore(dom->conn, name);
|
if (ret == 0)
|
||||||
if (ret == 0)
|
unlink(name);
|
||||||
unlink(name);
|
|
||||||
}
|
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i) {
|
if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
|
||||||
if (priv->opened[i] && drivers[i]->xenDomainCreate &&
|
ret = xenXMDomainCreate(dom);
|
||||||
drivers[i]->xenDomainCreate(dom) == 0) {
|
else
|
||||||
ret = 0;
|
ret = xenDaemonDomainCreate(dom);
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(name);
|
VIR_FREE(name);
|
||||||
|
@ -93,7 +93,6 @@ extern int xenRegister (void);
|
|||||||
* structure with direct calls in xen_unified.c.
|
* structure with direct calls in xen_unified.c.
|
||||||
*/
|
*/
|
||||||
struct xenUnifiedDriver {
|
struct xenUnifiedDriver {
|
||||||
virDrvDomainCreate xenDomainCreate;
|
|
||||||
virDrvDomainDefineXML xenDomainDefineXML;
|
virDrvDomainDefineXML xenDomainDefineXML;
|
||||||
virDrvDomainUndefine xenDomainUndefine;
|
virDrvDomainUndefine xenDomainUndefine;
|
||||||
virDrvDomainAttachDeviceFlags xenDomainAttachDeviceFlags;
|
virDrvDomainAttachDeviceFlags xenDomainAttachDeviceFlags;
|
||||||
|
@ -2898,23 +2898,17 @@ xenDaemonDomainDefineXML(virConnectPtr conn, const char *xmlDesc)
|
|||||||
int
|
int
|
||||||
xenDaemonDomainCreate(virDomainPtr domain)
|
xenDaemonDomainCreate(virDomainPtr domain)
|
||||||
{
|
{
|
||||||
xenUnifiedPrivatePtr priv = domain->conn->privateData;
|
|
||||||
int ret;
|
int ret;
|
||||||
virDomainPtr tmp;
|
|
||||||
|
|
||||||
if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
ret = xend_op(domain->conn, domain->name, "op", "start", NULL);
|
ret = xend_op(domain->conn, domain->name, "op", "start", NULL);
|
||||||
|
|
||||||
if (ret != -1) {
|
if (ret == 0) {
|
||||||
/* Need to force a refresh of this object's ID */
|
int id = xenDaemonDomainLookupByName_ids(domain->conn, domain->name,
|
||||||
tmp = virDomainLookupByName(domain->conn, domain->name);
|
domain->uuid);
|
||||||
if (tmp) {
|
if (id > 0)
|
||||||
domain->id = tmp->id;
|
domain->id = id;
|
||||||
virDomainFree(tmp);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3376,7 +3370,6 @@ xenDaemonDomainBlockPeek(virDomainPtr domain,
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct xenUnifiedDriver xenDaemonDriver = {
|
struct xenUnifiedDriver xenDaemonDriver = {
|
||||||
.xenDomainCreate = xenDaemonDomainCreate,
|
|
||||||
.xenDomainDefineXML = xenDaemonDomainDefineXML,
|
.xenDomainDefineXML = xenDaemonDomainDefineXML,
|
||||||
.xenDomainUndefine = xenDaemonDomainUndefine,
|
.xenDomainUndefine = xenDaemonDomainUndefine,
|
||||||
.xenDomainAttachDeviceFlags = xenDaemonAttachDeviceFlags,
|
.xenDomainAttachDeviceFlags = xenDaemonAttachDeviceFlags,
|
||||||
|
@ -81,7 +81,6 @@ static int xenXMDomainDetachDeviceFlags(virDomainPtr domain, const char *xml,
|
|||||||
#define XM_XML_ERROR "Invalid xml"
|
#define XM_XML_ERROR "Invalid xml"
|
||||||
|
|
||||||
struct xenUnifiedDriver xenXMDriver = {
|
struct xenUnifiedDriver xenXMDriver = {
|
||||||
.xenDomainCreate = xenXMDomainCreate,
|
|
||||||
.xenDomainDefineXML = xenXMDomainDefineXML,
|
.xenDomainDefineXML = xenXMDomainDefineXML,
|
||||||
.xenDomainUndefine = xenXMDomainUndefine,
|
.xenDomainUndefine = xenXMDomainUndefine,
|
||||||
.xenDomainAttachDeviceFlags = xenXMDomainAttachDeviceFlags,
|
.xenDomainAttachDeviceFlags = xenXMDomainAttachDeviceFlags,
|
||||||
@ -918,9 +917,6 @@ xenXMDomainCreate(virDomainPtr domain)
|
|||||||
const char *filename;
|
const char *filename;
|
||||||
xenXMConfCachePtr entry;
|
xenXMConfCachePtr entry;
|
||||||
|
|
||||||
if (domain->id != -1)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
xenUnifiedLock(priv);
|
xenUnifiedLock(priv);
|
||||||
|
|
||||||
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
|
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
|
||||||
|
Loading…
Reference in New Issue
Block a user