[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v5 2/5] libxl: add query function for backend support by device model



On 30/03/16 13:05, Juergen Gross wrote:
> Add a function to query whether the device model is supporting a
> specific backend type. The device model is writing the supported
> backend types to Xenstore on startup. The new query function checks
> for the appropriate entry to be present.
> 
> As not all versions of qemu are capable to indicate support of
> specific backends the query function is to be called with an indicator
> whether the default return value should be "supported" (in case qemu
> doesn't know set any support information) or "not supported".
> 
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>

Has this approach (writing backend capabilities into xenstore) been
agreed on the qemu side?  It's significantly different than what's been
done so far wrt qemu feature discovery, right?

I suppose we can just revert this whole series if they end up
disagreeing with this approach, but I think that's something we'd like
to avoid.  (Although I suppose that's ultimately the release manager's
call.)

 -George

> ---
>  tools/libxl/libxl_dm.c       | 19 +++++++++++++++++++
>  tools/libxl/libxl_internal.h |  5 +++++
>  2 files changed, 24 insertions(+)
> 
> diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
> index 0d88c37..7d9abbe 100644
> --- a/tools/libxl/libxl_dm.c
> +++ b/tools/libxl/libxl_dm.c
> @@ -1920,6 +1920,25 @@ out:
>          device_model_spawn_outcome(egc, dmss, rc);
>  }
>  
> +bool libxl__query_qemu_backend(libxl__gc *gc, uint32_t domid,
> +                               uint32_t backend_id, const char *type, bool 
> def)
> +{
> +    char *path;
> +    char **dir;
> +    unsigned int n;
> +
> +    path = GCSPRINTF("%s/device-model/%u/backends",
> +                     libxl__xs_get_dompath(gc, backend_id), domid);
> +    dir = libxl__xs_directory(gc, XBT_NULL, path, &n);
> +    if (!dir)
> +        return def;
> +
> +    path = GCSPRINTF("%s/device-model/%u/backends/%s",
> +                     libxl__xs_get_dompath(gc, backend_id), domid, type);
> +    dir = libxl__xs_directory(gc, XBT_NULL, path, &n);
> +
> +    return !!dir;
> +}
>  
>  static void device_model_confirm(libxl__egc *egc, libxl__spawn_state *spawn,
>                                   const char *xsdata)
> diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
> index fc7bdab..c06ffc0 100644
> --- a/tools/libxl/libxl_internal.h
> +++ b/tools/libxl/libxl_internal.h
> @@ -1617,6 +1617,11 @@ _hidden const char 
> *libxl__domain_device_model(libxl__gc *gc,
>                                          const libxl_domain_build_info *info);
>  _hidden int libxl__need_xenpv_qemu(libxl__gc *gc,
>                                     libxl_domain_config *d_config);
> +_hidden bool libxl__query_qemu_backend(libxl__gc *gc,
> +                                       uint32_t domid,
> +                                       uint32_t backend_id,
> +                                       const char *type,
> +                                       bool def);
>  
>  /*
>   * This function will fix reserved device memory conflict
> 


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.