]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
nodedev: introduce concept of 'active' node devices
authorJonathon Jongsma <jjongsma@redhat.com>
Thu, 9 Jul 2020 15:39:34 +0000 (10:39 -0500)
committerJonathon Jongsma <jjongsma@redhat.com>
Wed, 7 Apr 2021 20:03:34 +0000 (15:03 -0500)
we will be able to define mediated devices that can be started or
stopped, so we need to be able to indicate whether the device is active
or not, similar to other resources (storage pools, domains, etc.)

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
src/conf/virnodedeviceobj.c
src/conf/virnodedeviceobj.h
src/libvirt_private.syms
src/node_device/node_device_udev.c

index ecae3d0479b0b456d342df2bcb465ccb8d6e00f7..f0ceb61a19bf64ff660795ba1f9e4f7073d0488e 100644 (file)
@@ -39,6 +39,7 @@ struct _virNodeDeviceObj {
     virNodeDeviceDefPtr def;            /* device definition */
     bool skipUpdateCaps;                /* whether to skip checking host caps,
                                            used by testdriver */
+    bool active;
 };
 
 struct _virNodeDeviceObjList {
@@ -976,3 +977,18 @@ virNodeDeviceObjSetSkipUpdateCaps(virNodeDeviceObjPtr obj,
 {
     obj->skipUpdateCaps = skipUpdateCaps;
 }
+
+
+bool
+virNodeDeviceObjIsActive(virNodeDeviceObj *obj)
+{
+    return obj->active;
+}
+
+
+void
+virNodeDeviceObjSetActive(virNodeDeviceObj *obj,
+                          bool active)
+{
+    obj->active = active;
+}
index 6efdb23d365d2e45ed39c7a66a23737af540bf90..e786a70f51c10d77bb7da59f684bfc83b2501cd7 100644 (file)
@@ -121,3 +121,10 @@ virNodeDeviceObjSetSkipUpdateCaps(virNodeDeviceObjPtr obj,
 virNodeDeviceObjPtr
 virNodeDeviceObjListFindMediatedDeviceByUUID(virNodeDeviceObjListPtr devs,
                                              const char *uuid);
+
+bool
+virNodeDeviceObjIsActive(virNodeDeviceObj *obj);
+
+void
+virNodeDeviceObjSetActive(virNodeDeviceObj *obj,
+                          bool active);
index cb9fe7c80a3074f7426610629dad54d8a33efcf9..09957c943b1552a146c14750d97f9d9c6b3bb3f1 100644 (file)
@@ -1272,6 +1272,7 @@ virNetworkPortDefSaveStatus;
 # conf/virnodedeviceobj.h
 virNodeDeviceObjEndAPI;
 virNodeDeviceObjGetDef;
+virNodeDeviceObjIsActive;
 virNodeDeviceObjListAssignDef;
 virNodeDeviceObjListExport;
 virNodeDeviceObjListFindByName;
@@ -1284,6 +1285,7 @@ virNodeDeviceObjListGetParentHost;
 virNodeDeviceObjListNew;
 virNodeDeviceObjListNumOfDevices;
 virNodeDeviceObjListRemove;
+virNodeDeviceObjSetActive;
 
 
 # conf/virnwfilterbindingdef.h
index 3daa5c90adda5301cf8825de39064689e550675c..373f36c41f54d1fc9cf8e9b161a94bb3dc4af5f0 100644 (file)
@@ -1544,6 +1544,7 @@ udevAddOneDevice(struct udev_device *device)
     else
         event = virNodeDeviceEventUpdateNew(objdef->name);
 
+    virNodeDeviceObjSetActive(obj, true);
     virNodeDeviceObjEndAPI(&obj);
 
     ret = 0;
@@ -1930,6 +1931,8 @@ udevSetupSystemDev(void)
     if (!(obj = virNodeDeviceObjListAssignDef(driver->devs, def)))
         goto cleanup;
 
+    virNodeDeviceObjSetActive(obj, true);
+
     virNodeDeviceObjEndAPI(&obj);
 
     ret = 0;