From f53ffba6aa87fd11e8c82fbbbf3443cdc55e0d56 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 30 Apr 2013 17:31:40 +0100 Subject: [PATCH] Simplify the Xen driver define domain driver methods Directly call either XenD or the XM driver for handling domain define operations. Signed-off-by: Daniel P. Berrange --- src/xen/xen_driver.c | 28 ++++++++++------------------ src/xen/xen_driver.h | 2 -- src/xen/xend_internal.c | 17 ++--------------- src/xen/xend_internal.h | 5 +++++ src/xen/xm_internal.c | 2 -- 5 files changed, 17 insertions(+), 37 deletions(-) diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index 781e37396e..d04fe16ab8 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -1320,32 +1320,24 @@ xenUnifiedConnectListDefinedDomains(virConnectPtr conn, char **const names, int maxnames) { xenUnifiedPrivatePtr priv = conn->privateData; - int i; - int ret; - for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i) - if (priv->opened[i] && drivers[i]->xenListDefinedDomains) { - ret = drivers[i]->xenListDefinedDomains(conn, names, maxnames); - if (ret >= 0) return ret; - } - - return -1; + if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) { + return xenXMListDefinedDomains(conn, names, maxnames); + } else { + return xenDaemonListDefinedDomains(conn, names, maxnames); + } } static int xenUnifiedConnectNumOfDefinedDomains(virConnectPtr conn) { xenUnifiedPrivatePtr priv = conn->privateData; - int i; - int ret; - for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i) - if (priv->opened[i] && drivers[i]->xenNumOfDefinedDomains) { - ret = drivers[i]->xenNumOfDefinedDomains(conn); - if (ret >= 0) return ret; - } - - return -1; + if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) { + return xenXMNumOfDefinedDomains(conn); + } else { + return xenDaemonNumOfDefinedDomains(conn); + } } static int diff --git a/src/xen/xen_driver.h b/src/xen/xen_driver.h index 4b18b4d2ca..c756dded27 100644 --- a/src/xen/xen_driver.h +++ b/src/xen/xen_driver.h @@ -93,8 +93,6 @@ extern int xenRegister (void); * structure with direct calls in xen_unified.c. */ struct xenUnifiedDriver { - virDrvConnectListDefinedDomains xenListDefinedDomains; - virDrvConnectNumOfDefinedDomains xenNumOfDefinedDomains; virDrvDomainCreate xenDomainCreate; virDrvDomainDefineXML xenDomainDefineXML; virDrvDomainUndefine xenDomainUndefine; diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index 609c5ab548..55e2197568 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -2937,19 +2937,12 @@ xenDaemonDomainUndefine(virDomainPtr domain) * * Returns the number of domain found or -1 in case of error */ -static int +int xenDaemonNumOfDefinedDomains(virConnectPtr conn) { struct sexpr *root = NULL; int ret = -1; struct sexpr *_for_i, *node; - xenUnifiedPrivatePtr priv = conn->privateData; - - /* xm_internal.c (the support for defined domains from /etc/xen - * config files used by old Xen) will handle this. - */ - if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) - return -1; root = sexpr_get(conn, "/xend/domain?state=halted"); if (root == NULL) @@ -2970,7 +2963,7 @@ error: return ret; } -static int +int xenDaemonListDefinedDomains(virConnectPtr conn, char **const names, int maxnames) @@ -2978,10 +2971,6 @@ xenDaemonListDefinedDomains(virConnectPtr conn, struct sexpr *root = NULL; int i, ret = -1; struct sexpr *_for_i, *node; - xenUnifiedPrivatePtr priv = conn->privateData; - - if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) - return -1; if (maxnames == 0) return 0; @@ -3387,8 +3376,6 @@ xenDaemonDomainBlockPeek(virDomainPtr domain, } struct xenUnifiedDriver xenDaemonDriver = { - .xenListDefinedDomains = xenDaemonListDefinedDomains, - .xenNumOfDefinedDomains = xenDaemonNumOfDefinedDomains, .xenDomainCreate = xenDaemonDomainCreate, .xenDomainDefineXML = xenDaemonDomainDefineXML, .xenDomainUndefine = xenDaemonDomainUndefine, diff --git a/src/xen/xend_internal.h b/src/xen/xend_internal.h index fd661c9cdd..4dc97bbe89 100644 --- a/src/xen/xend_internal.h +++ b/src/xen/xend_internal.h @@ -109,6 +109,11 @@ char **xenDaemonListDomainsOld(virConnectPtr xend); char *xenDaemonDomainGetOSType(virDomainPtr domain); +int xenDaemonNumOfDefinedDomains(virConnectPtr conn); +int xenDaemonListDefinedDomains(virConnectPtr conn, + char **const names, + int maxnames); + virDomainPtr xenDaemonDomainDefineXML(virConnectPtr xend, const char *sexpr); int xenDaemonDomainCreate(virDomainPtr domain); int xenDaemonDomainUndefine(virDomainPtr domain); diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c index 353f693749..d7099cfbc0 100644 --- a/src/xen/xm_internal.c +++ b/src/xen/xm_internal.c @@ -81,8 +81,6 @@ static int xenXMDomainDetachDeviceFlags(virDomainPtr domain, const char *xml, #define XM_XML_ERROR "Invalid xml" struct xenUnifiedDriver xenXMDriver = { - .xenListDefinedDomains = xenXMListDefinedDomains, - .xenNumOfDefinedDomains = xenXMNumOfDefinedDomains, .xenDomainCreate = xenXMDomainCreate, .xenDomainDefineXML = xenXMDomainDefineXML, .xenDomainUndefine = xenXMDomainUndefine,