[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