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

Jonathon Jongsma jjongsma at redhat.com
Wed Feb 3 17:39:08 UTC 2021


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) {
+        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) {
+        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);
 
     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 0000:00:02.0 --jsonfile /dev/stdin
+$MDEVCTL_BINARY$ define -p 0000: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 0000:00:02.0 --jsonfile /dev/stdin
+$MDEVCTL_BINARY$ start -p 0000: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 @@
   <parent>pci_0000_00_02_0</parent>
   <capability type='mdev'>
     <type id='i915-GVTg_V5_8'/>
+    <uuid>d069d019-36ea-4111-8f0a-8c9a70e21366</uuid>
   </capability>
 </device>
-- 
2.26.2




More information about the libvir-list mailing list