[libvirt] [PATCH 24/40] Simplify the Xen domain start driver method
Jim Fehlig
jfehlig at suse.com
Wed May 8 22:40:04 UTC 2013
Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
>
> Directly call either the XenD or XM driver when starting
> a persistent domain
>
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
> src/xen/xen_driver.c | 20 +++++++-------------
> src/xen/xen_driver.h | 1 -
> src/xen/xend_internal.c | 20 +-------------------
> src/xen/xm_internal.c | 4 ----
> 4 files changed, 8 insertions(+), 37 deletions(-)
>
> diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c
> index f504539..f6c1891 100644
> --- a/src/xen/xen_driver.c
> +++ b/src/xen/xen_driver.c
> @@ -1333,7 +1333,6 @@ static int
> xenUnifiedDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
> {
> xenUnifiedPrivatePtr priv = dom->conn->privateData;
> - int i;
> int ret = -1;
> char *name = NULL;
>
> @@ -1344,21 +1343,16 @@ xenUnifiedDomainCreateWithFlags(virDomainPtr dom, unsigned int flags)
> goto cleanup;
>
> if (virFileExists(name)) {
> - if (priv->opened[XEN_UNIFIED_XEND_OFFSET]) {
> - ret = xenDaemonDomainRestore(dom->conn, name);
> - if (ret == 0)
> - unlink(name);
> - }
> + ret = xenDaemonDomainRestore(dom->conn, name);
> + if (ret == 0)
> + unlink(name);
> goto cleanup;
> }
>
> - for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i) {
> - if (priv->opened[i] && drivers[i]->xenDomainCreate &&
> - drivers[i]->xenDomainCreate(dom) == 0) {
> - ret = 0;
> - goto cleanup;
> - }
> - }
> + if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
> + ret = xenXMDomainCreate(dom);
> + else
> + ret = xenDaemonDomainCreate(dom);
>
> cleanup:
> VIR_FREE(name);
> diff --git a/src/xen/xen_driver.h b/src/xen/xen_driver.h
> index c756dde..e2c0d68 100644
> --- a/src/xen/xen_driver.h
> +++ b/src/xen/xen_driver.h
> @@ -93,7 +93,6 @@ extern int xenRegister (void);
> * structure with direct calls in xen_unified.c.
> */
> struct xenUnifiedDriver {
> - virDrvDomainCreate xenDomainCreate;
> virDrvDomainDefineXML xenDomainDefineXML;
> virDrvDomainUndefine xenDomainUndefine;
> virDrvDomainAttachDeviceFlags xenDomainAttachDeviceFlags;
> diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
> index addc547..dcd31de 100644
> --- a/src/xen/xend_internal.c
> +++ b/src/xen/xend_internal.c
> @@ -2899,24 +2899,7 @@ xenDaemonDomainDefineXML(virConnectPtr conn, const char *xmlDesc)
> int
> xenDaemonDomainCreate(virDomainPtr domain)
> {
> - xenUnifiedPrivatePtr priv = domain->conn->privateData;
> - 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);
> -
> - if (ret != -1) {
> - /* Need to force a refresh of this object's ID */
> - tmp = virDomainLookupByName(domain->conn, domain->name);
> - if (tmp) {
> - domain->id = tmp->id;
> - virDomainFree(tmp);
> - }
> - }
>
Should this bit about updating the domain id be removed? Will the dom id
remain at -1? If the id needs updated, it should probably be retrieved
directly from xend.
Regards,
Jim
>
> - return ret;
> + return xend_op(domain->conn, domain->name, "op", "start", NULL);
> }
>
> int
> @@ -3378,7 +3361,6 @@ xenDaemonDomainBlockPeek(virDomainPtr domain,
> }
>
> struct xenUnifiedDriver xenDaemonDriver = {
> - .xenDomainCreate = xenDaemonDomainCreate,
> .xenDomainDefineXML = xenDaemonDomainDefineXML,
> .xenDomainUndefine = xenDaemonDomainUndefine,
> .xenDomainAttachDeviceFlags = xenDaemonAttachDeviceFlags,
> diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
> index f5348bd..505f959 100644
> --- a/src/xen/xm_internal.c
> +++ b/src/xen/xm_internal.c
> @@ -81,7 +81,6 @@ static int xenXMDomainDetachDeviceFlags(virDomainPtr domain, const char *xml,
> #define XM_XML_ERROR "Invalid xml"
>
> struct xenUnifiedDriver xenXMDriver = {
> - .xenDomainCreate = xenXMDomainCreate,
> .xenDomainDefineXML = xenXMDomainDefineXML,
> .xenDomainUndefine = xenXMDomainUndefine,
> .xenDomainAttachDeviceFlags = xenXMDomainAttachDeviceFlags,
> @@ -923,9 +922,6 @@ xenXMDomainCreate(virDomainPtr domain)
> const char *filename;
> xenXMConfCachePtr entry;
>
> - if (domain->id != -1)
> - return -1;
> -
> xenUnifiedLock(priv);
>
> if (!(filename = virHashLookup(priv->nameConfigMap, domain->name)))
>
More information about the libvir-list
mailing list