[libvirt PATCH v6 13/30] nodedev: handle mdevs that disappear from mdevctl

Erik Skultety eskultet at redhat.com
Tue Mar 30 15:58:15 UTC 2021


On Fri, Mar 26, 2021 at 11:48:09AM -0500, Jonathon Jongsma wrote:
> mdevctl does not currently provide any events when the list of defined
> devices changes, so we will need to poll mdevctl for the list of defined
> devices periodically. When a mediated device no longer exists from one
> iteration to the next, we need to treat it as an "undefine" event.
> 
> When we get such an event, we remove the device from the list if it's
> not active. Otherwise, we simply mark it as non-persistent.
> 
> Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
> ---
>  src/node_device/node_device_driver.c | 67 ++++++++++++++++++++++++++--
>  1 file changed, 64 insertions(+), 3 deletions(-)
> 
> diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c
> index efa524f317..4be650ddef 100644
> --- a/src/node_device/node_device_driver.c
> +++ b/src/node_device/node_device_driver.c
> @@ -1183,20 +1183,81 @@ virMdevctlListDefined(virNodeDeviceDef ***devs)
>  }
>  
>  
> +typedef struct _virMdevctlForEachData virMdevctlForEachData;
> +struct _virMdevctlForEachData {
> +    int ndefs;
> +    virNodeDeviceDef **defs;
> +};
> +
> +
> +/* This function keeps the list of persistent mediated devices consistent
> + * between the nodedev driver and mdevctl.
> + * @obj is a device that is currently known by the nodedev driver, and @opaque
> + * contains the most recent list of devices defined by mdevctl. If @obj is no
> + * longer defined in mdevctl, mark it as undefined and possibly remove it from
> + * the driver as well. Returning 'true' from this function indicates that the
> + * device should be removed from the nodedev driver list. */
> +static bool
> +removeMissingPersistentMdevs(virNodeDeviceObj *obj,

Since this handles a single device at a time --> removeMissingPersistentMdev

Reviewed-by: Erik Skultety <eskultet at redhat.com>




More information about the libvir-list mailing list