Re: [libvirt PATCH v4 24/25] nodedev: add ability to specify UUID for new mdevs
On Wed, Feb 03, 2021 at 11:39:08AM -0600, Jonathon Jongsma wrote: > Use the new element in the mdev caps to define and start devices > with a specific UUID. > > Signed-off-by: Jonathon Jongsma > --- > 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(); > +} > > -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(); > +} > + > mdevGenerateDeviceName(def); > -device = nodeDeviceFindNewMediatedDevice(conn, uuid); > +device = nodeDeviceFindNewMediatedDevice(conn, > def->caps->data.mdev.uuid);
[libvirt PATCH v4 24/25] nodedev: add ability to specify UUID for new mdevs
Use the new element in the mdev caps to define and start devices with a specific UUID. Signed-off-by: Jonathon Jongsma --- 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) { +g_free(def->caps->data.mdev.uuid); +def->caps->data.mdev.uuid = g_steal_pointer(); +} -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) { +g_free(def->caps->data.mdev.uuid); +def->caps->data.mdev.uuid = g_steal_pointer(); +} + mdevGenerateDeviceName(def); -device = nodeDeviceFindNewMediatedDevice(conn, uuid); +device = nodeDeviceFindNewMediatedDevice(conn, def->caps->data.mdev.uuid); return device; } diff --git a/tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-define.argv b/tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-define.argv index 773e98b963..118ec7a8da 100644 --- a/tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-define.argv +++ b/tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-define.argv @@ -1 +1,2 @@ -$MDEVCTL_BINARY$ define -p :00:02.0 --jsonfile /dev/stdin +$MDEVCTL_BINARY$ define -p :00:02.0 --jsonfile /dev/stdin \ +--uuid=d069d019-36ea-4111-8f0a-8c9a70e21366 diff --git a/tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-start.argv b/tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-start.argv index eb7262035e..129f438e4a 100644 --- a/tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-start.argv +++ b/tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-start.argv @@ -1 +1,2 @@ -$MDEVCTL_BINARY$ start -p :00:02.0 --jsonfile /dev/stdin +$MDEVCTL_BINARY$ start -p :00:02.0 --jsonfile /dev/stdin \ +--uuid=d069d019-36ea-4111-8f0a-8c9a70e21366 diff --git a/tests/nodedevschemadata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366.xml b/tests/nodedevschemadata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366.xml index d6a2e99edc..605d8f63a1 100644 --- a/tests/nodedevschemadata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366.xml +++ b/tests/nodedevschemadata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366.xml @@ -3,5 +3,6 @@ pci__00_02_0 +d069d019-36ea-4111-8f0a-8c9a70e21366 -- 2.26.2