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

Re: [Xen-devel] [PATCH v4 09/10] libxl: call hotplug scripts for nic devices from libxl



Roger Pau Monne writes ("[PATCH v4 09/10] libxl: call hotplug scripts for nic 
devices from libxl"):
> Since most of the needed work is already done in previous patches,
> this patch only contains the necessary code to call hotplug scripts
> for nic devices, that should be called when the device is added or
> removed from a guest.
> 
> Changes since v2:
> 
>  * Change libxl__nic_type to return the value in a parameter passed by
>    the caller.
> 
>  * Rename vif_execute to num_exec, to represent the number of times
>    hotplug scripts have been called for that device.

This observation needs to be reworked into a suitable form and placed
as a comment here in the code:

> diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
> index da5b02b..766f1f3 100644
> --- a/tools/libxl/libxl_internal.h
> +++ b/tools/libxl/libxl_internal.h
...
> @@ -1860,7 +1863,8 @@ _hidden void libxl__initiate_device_remove(libxl__egc 
> *egc,
>   */
>  _hidden int libxl__get_hotplug_script_info(libxl__gc *gc, libxl__device *dev,
>                                             char ***args, char ***env,
> -                                           libxl__device_action action);
> +                                           libxl__device_action action,
> +                                           int num_exec);

And the semantics need to be clearly explained.  In particular, this
is an interface that is supposed to be implemented by multiple
providers for different platforms.

I _think_ what is happening is that `num_exec' is always 0 for
everything but vifs.  For vifs libxl__get_hotplug_script_info is
always called with num_exec==0 for the actual PV vif (Xen PV
interface) but may also be called with num_exec==1 for the ioemu
device, but I may be wrong.

> diff --git a/tools/libxl/libxl_linux.c b/tools/libxl/libxl_linux.c
> index 98cd25f..e1e2abe 100644
> --- a/tools/libxl/libxl_linux.c
> +++ b/tools/libxl/libxl_linux.c
> @@ -34,7 +34,8 @@ static char **get_hotplug_env(libxl__gc *gc, libxl__device 
> *dev)
...
> +static int libxl__hotplug_nic(libxl__gc *gc, libxl__device *dev,
> +                               char ***args, char ***env,
> +                               libxl__device_action action, int num_exec)
...
> +    switch (nictype) {
> +    case LIBXL_NIC_TYPE_IOEMU:
> +        if (num_exec == 0) goto execute_vif;

Urgh!  This is a pretty nasty use of goto.

Thanks,
Ian.

_______________________________________________
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®.