[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