[libvirt PATCH v4 24/25] nodedev: add ability to specify UUID for new mdevs

Erik Skultety eskultet at redhat.com
Mon Feb 22 07:25:38 UTC 2021


On Wed, Feb 03, 2021 at 11:39:08AM -0600, Jonathon Jongsma wrote:
> Use the new <uuid> element in the mdev caps to define and start devices
> with a specific UUID.
> 
> Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
> ---
>  src/node_device/node_device_driver.c           | 18 +++++++++++++++---
>  ...019_36ea_4111_8f0a_8c9a70e21366-define.argv |  3 ++-
>  ...d019_36ea_4111_8f0a_8c9a70e21366-start.argv |  3 ++-
>  ...ev_d069d019_36ea_4111_8f0a_8c9a70e21366.xml |  1 +
>  4 files changed, 20 insertions(+), 5 deletions(-)
> 
> diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c
> index d5cdf2b097..bf97291041 100644
> --- a/src/node_device/node_device_driver.c
> +++ b/src/node_device/node_device_driver.c
> @@ -728,6 +728,10 @@ nodeDeviceGetMdevctlDefineStartCommand(virNodeDeviceDefPtr def,
>                                 NULL);
>  
>      virCommandSetInputBuffer(cmd, json);
> +
> +    if (def->caps->data.mdev.uuid)
> +        virCommandAddArgPair(cmd, "--uuid", def->caps->data.mdev.uuid);
> +
>      virCommandSetOutputBuffer(cmd, uuid_out);
>  
>      return cmd;
> @@ -806,8 +810,12 @@ nodeDeviceCreateXMLMdev(virConnectPtr conn,
>                         _("Unable to start mediated device"));
>          return NULL;
>      }
> +    if (uuid) {

mdevctl returns an empty string when UUID was provided, so this has to become
'if (uuid && uuid[0])'

> +        g_free(def->caps->data.mdev.uuid);
> +        def->caps->data.mdev.uuid = g_steal_pointer(&uuid);
> +    }
>  
> -    return nodeDeviceFindNewMediatedDevice(conn, uuid);
> +    return nodeDeviceFindNewMediatedDevice(conn, def->caps->data.mdev.uuid);
>  }
>  
>  
> @@ -1213,9 +1221,13 @@ nodeDeviceDefineXML(virConnectPtr conn,
>          return NULL;
>      }
>  
> -    def->caps->data.mdev.uuid = g_strdup(uuid);
> +    if (uuid) {

^Here too...

Erik

> +        g_free(def->caps->data.mdev.uuid);
> +        def->caps->data.mdev.uuid = g_steal_pointer(&uuid);
> +    }
> +
>      mdevGenerateDeviceName(def);
> -    device = nodeDeviceFindNewMediatedDevice(conn, uuid);
> +    device = nodeDeviceFindNewMediatedDevice(conn, def->caps->data.mdev.uuid);




More information about the libvir-list mailing list