]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
nodedev: add ability to specify UUID for new mdevs
authorJonathon Jongsma <jjongsma@redhat.com>
Fri, 29 Jan 2021 22:24:50 +0000 (16:24 -0600)
committerJonathon Jongsma <jjongsma@redhat.com>
Wed, 7 Apr 2021 20:24:17 +0000 (15:24 -0500)
Use the new <uuid> element in the mdev caps to define and start devices
with a specific UUID.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
src/node_device/node_device_driver.c
tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-define.argv
tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366-start.argv
tests/nodedevschemadata/mdev_d069d019_36ea_4111_8f0a_8c9a70e21366.xml

index e2e5c1cf4c91f07507a3476c85f8d3bdbcb47528..3c79c3aa4258fbc025c4dd8be206f6e06fca8c5b 100644 (file)
@@ -729,6 +729,10 @@ nodeDeviceGetMdevctlDefineStartCommand(virNodeDeviceDef *def,
                                NULL);
 
     virCommandSetInputBuffer(cmd, json);
+
+    if (def->caps->data.mdev.uuid)
+        virCommandAddArgPair(cmd, "--uuid", def->caps->data.mdev.uuid);
+
     virCommandSetOutputBuffer(cmd, uuid_out);
     virCommandSetErrorBuffer(cmd, errmsg);
 
@@ -818,7 +822,12 @@ nodeDeviceCreateXMLMdev(virConnectPtr conn,
         return NULL;
     }
 
-    return nodeDeviceFindNewMediatedDevice(conn, uuid);
+    if (uuid && uuid[0]) {
+        g_free(def->caps->data.mdev.uuid);
+        def->caps->data.mdev.uuid = g_steal_pointer(&uuid);
+    }
+
+    return nodeDeviceFindNewMediatedDevice(conn, def->caps->data.mdev.uuid);
 }
 
 
@@ -1235,9 +1244,13 @@ nodeDeviceDefineXML(virConnect *conn,
         return NULL;
     }
 
-    def->caps->data.mdev.uuid = g_strdup(uuid);
+    if (uuid && uuid[0]) {
+        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;
 }
index 773e98b96353b420028019b0b84e298de56ca51f..118ec7a8da603786f7f09015db1f3ec2972cc1b9 100644 (file)
@@ -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
index eb7262035e48328fe36b1dd7641164fa99db6b5e..129f438e4ad2423dabc5097e5d47f9346a148346 100644 (file)
@@ -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
index d6a2e99edc7e13434bf5537ab00d6d612e8d4ce0..605d8f63a170a68c9c09139e5dc38d5be76a93d9 100644 (file)
@@ -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>