提交 6e661001 编写于 作者: D Daniel P. Berrange

Simplify the Xen domain define/undefine driver methods

Make the domain define/undefine driver methods directly call
into either the XenD or XM drivers
Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
上级 2fc06608
...@@ -1380,31 +1380,23 @@ static virDomainPtr ...@@ -1380,31 +1380,23 @@ static virDomainPtr
xenUnifiedDomainDefineXML(virConnectPtr conn, const char *xml) xenUnifiedDomainDefineXML(virConnectPtr conn, const char *xml)
{ {
xenUnifiedPrivatePtr priv = conn->privateData; xenUnifiedPrivatePtr priv = conn->privateData;
int i;
virDomainPtr ret;
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
if (priv->opened[i] && drivers[i]->xenDomainDefineXML) {
ret = drivers[i]->xenDomainDefineXML(conn, xml);
if (ret) return ret;
}
return NULL; if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
return xenXMDomainDefineXML(conn, xml);
else
return xenDaemonDomainDefineXML(conn, xml);
} }
static int static int
xenUnifiedDomainUndefineFlags(virDomainPtr dom, unsigned int flags) xenUnifiedDomainUndefineFlags(virDomainPtr dom, unsigned int flags)
{ {
xenUnifiedPrivatePtr priv = dom->conn->privateData; xenUnifiedPrivatePtr priv = dom->conn->privateData;
int i;
virCheckFlags(0, -1); virCheckFlags(0, -1);
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i) if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
if (priv->opened[i] && drivers[i]->xenDomainUndefine && return xenXMDomainUndefine(dom);
drivers[i]->xenDomainUndefine(dom) == 0) else
return 0; return xenDaemonDomainUndefine(dom);
return -1;
} }
static int static int
......
...@@ -93,8 +93,6 @@ extern int xenRegister (void); ...@@ -93,8 +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 {
virDrvDomainDefineXML xenDomainDefineXML;
virDrvDomainUndefine xenDomainUndefine;
virDrvDomainAttachDeviceFlags xenDomainAttachDeviceFlags; virDrvDomainAttachDeviceFlags xenDomainAttachDeviceFlags;
virDrvDomainDetachDeviceFlags xenDomainDetachDeviceFlags; virDrvDomainDetachDeviceFlags xenDomainDetachDeviceFlags;
virDrvDomainGetSchedulerType xenDomainGetSchedulerType; virDrvDomainGetSchedulerType xenDomainGetSchedulerType;
......
...@@ -2859,9 +2859,6 @@ xenDaemonDomainDefineXML(virConnectPtr conn, const char *xmlDesc) ...@@ -2859,9 +2859,6 @@ xenDaemonDomainDefineXML(virConnectPtr conn, const char *xmlDesc)
xenUnifiedPrivatePtr priv = conn->privateData; xenUnifiedPrivatePtr priv = conn->privateData;
virDomainDefPtr def; virDomainDefPtr def;
if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
return NULL;
if (!(def = virDomainDefParseString(xmlDesc, priv->caps, priv->xmlopt, if (!(def = virDomainDefParseString(xmlDesc, priv->caps, priv->xmlopt,
1 << VIR_DOMAIN_VIRT_XEN, 1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE))) { VIR_DOMAIN_XML_INACTIVE))) {
...@@ -2915,11 +2912,6 @@ xenDaemonDomainCreate(virDomainPtr domain) ...@@ -2915,11 +2912,6 @@ xenDaemonDomainCreate(virDomainPtr domain)
int int
xenDaemonDomainUndefine(virDomainPtr domain) xenDaemonDomainUndefine(virDomainPtr domain)
{ {
xenUnifiedPrivatePtr priv = domain->conn->privateData;
if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
return -1;
return xend_op(domain->conn, domain->name, "op", "delete", NULL); return xend_op(domain->conn, domain->name, "op", "delete", NULL);
} }
...@@ -3370,8 +3362,6 @@ xenDaemonDomainBlockPeek(virDomainPtr domain, ...@@ -3370,8 +3362,6 @@ xenDaemonDomainBlockPeek(virDomainPtr domain,
} }
struct xenUnifiedDriver xenDaemonDriver = { struct xenUnifiedDriver xenDaemonDriver = {
.xenDomainDefineXML = xenDaemonDomainDefineXML,
.xenDomainUndefine = xenDaemonDomainUndefine,
.xenDomainAttachDeviceFlags = xenDaemonAttachDeviceFlags, .xenDomainAttachDeviceFlags = xenDaemonAttachDeviceFlags,
.xenDomainDetachDeviceFlags = xenDaemonDetachDeviceFlags, .xenDomainDetachDeviceFlags = xenDaemonDetachDeviceFlags,
.xenDomainGetSchedulerType = xenDaemonGetSchedulerType, .xenDomainGetSchedulerType = xenDaemonGetSchedulerType,
......
...@@ -81,8 +81,6 @@ static int xenXMDomainDetachDeviceFlags(virDomainPtr domain, const char *xml, ...@@ -81,8 +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 = {
.xenDomainDefineXML = xenXMDomainDefineXML,
.xenDomainUndefine = xenXMDomainUndefine,
.xenDomainAttachDeviceFlags = xenXMDomainAttachDeviceFlags, .xenDomainAttachDeviceFlags = xenXMDomainAttachDeviceFlags,
.xenDomainDetachDeviceFlags = xenXMDomainDetachDeviceFlags, .xenDomainDetachDeviceFlags = xenXMDomainDetachDeviceFlags,
}; };
...@@ -1103,9 +1101,6 @@ xenXMDomainUndefine(virDomainPtr domain) ...@@ -1103,9 +1101,6 @@ xenXMDomainUndefine(virDomainPtr domain)
xenXMConfCachePtr entry; xenXMConfCachePtr entry;
int ret = -1; int ret = -1;
if (domain->id != -1)
return -1;
xenUnifiedLock(priv); xenUnifiedLock(priv);
if (!(filename = virHashLookup(priv->nameConfigMap, domain->name))) if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册