On 3/15/22 09:56, Boris Fiuczynski wrote:
When nodedev objects are added and removed if possible check if
mdev-types is
supported by the object and trigger a mdev device definition update to correct
the associated parent nodedevs.
Signed-off-by: Boris Fiuczynski <fiuczy(a)linux.ibm.com>
---
src/node_device/node_device_udev.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index b0a5e6302c..e17373a0b0 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -1440,6 +1440,10 @@ udevRemoveOneDeviceSysPath(const char *path)
}
virNodeDeviceObjEndAPI(&obj);
+ /* cannot check for mdev_types since they have already been removed */
+ if (nodeDeviceUpdateMediatedDevices() < 0)
+ VIR_WARN("mdevctl failed to updated mediated devices");
failed to update
+
virObjectEventStateQueue(driver->nodeDeviceEventState, event);
return 0;
}
@@ -1507,6 +1511,7 @@ udevAddOneDevice(struct udev_device *device)
bool persistent = false;
bool autostart = false;
bool is_mdev;
+ bool is_mdev_types = false;
has_mdev_cap perhaps?
def = g_new0(virNodeDeviceDef, 1);
@@ -1562,8 +1567,12 @@ udevAddOneDevice(struct udev_device *device)
event = virNodeDeviceEventUpdateNew(objdef->name);
virNodeDeviceObjSetActive(obj, true);
+ is_mdev_types = virNodeDeviceObjHasCap(obj, VIR_NODE_DEV_CAP_MDEV_TYPES);
virNodeDeviceObjEndAPI(&obj);
+ if (is_mdev_types && nodeDeviceUpdateMediatedDevices() < 0)
+ VIR_WARN("mdevctl failed to updated mediated devices");
s/updated/update/
+
ret = 0;
cleanup:
Otherwise looking good. I'll let Jonathon express his thoughts, but you
have my:
Reviewed-by: Michal Privoznik <mprivozn(a)redhat.com>
Michal