[libvirt] [PATCH 23/40] Simplify the Xen driver define domain driver methods

Jim Fehlig jfehlig at suse.com
Wed May 8 22:30:47 UTC 2013


Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
>
> Directly call either XenD or the XM driver for handling
> domain define operations.
>
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
>  src/xen/xen_driver.c    | 28 ++++++++++------------------
>  src/xen/xen_driver.h    |  2 --
>  src/xen/xend_internal.c | 18 +++---------------
>  src/xen/xend_internal.h |  6 ++++++
>  src/xen/xm_internal.c   |  2 --
>  5 files changed, 19 insertions(+), 37 deletions(-)
>
> diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c
> index cfdc940..f504539 100644
> --- a/src/xen/xen_driver.c
> +++ b/src/xen/xen_driver.c
> @@ -1309,32 +1309,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 4b18b4d..c756dde 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 930b882..addc547 100644
> --- a/src/xen/xend_internal.c
> +++ b/src/xen/xend_internal.c
> @@ -2938,19 +2938,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)
> @@ -2971,7 +2964,8 @@ error:
>      return ret;
>  }
>  
> -static int
> +
>   

Extra whitespace.

> +int
>  xenDaemonListDefinedDomains(virConnectPtr conn,
>                              char **const names,
>                              int maxnames)
> @@ -2979,10 +2973,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;
> @@ -3388,8 +3378,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 fd661c9..d773ef9 100644
> --- a/src/xen/xend_internal.h
> +++ b/src/xen/xend_internal.h
> @@ -109,6 +109,12 @@ char **xenDaemonListDomainsOld(virConnectPtr xend);
>  
>  char *xenDaemonDomainGetOSType(virDomainPtr domain);
>  
> +int xenDaemonNumOfDefinedDomains(virConnectPtr conn);
> +int xenDaemonListDefinedDomains(virConnectPtr conn,
> +                                char **const names,
> +                                int maxnames);
> +
> +
>   

Extra whitespace.

>  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 fed721a..f5348bd 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,
>   

ACK.

Regards,
Jim




More information about the libvir-list mailing list