Filter out some subsystems we are not interested in.
---
After the netdev cleanups, this speeds up the driver initialization from 18 ms to 13 ms,
which is percentually a lot, but neligible in absolute times.
This patch uses a negative filter because I could not find an exhaustive list of possible
subsystems.
A positive filter could be applied to udev_monitor as well.
src/node_device/node_device_udev.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index b46fec6..2e86230 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -1167,13 +1167,34 @@ static int udevProcessDeviceListEntry(struct udev *udev,
}
+const char *subsystem_blacklist[] = {
+ "acpi", "tty", "vc", "i2c",
+};
+
+static int udevEnumerateAddMatches(struct udev_enumerate *udev_enumerate)
+{
+ size_t i;
+
+ for (i = 0; i < ARRAY_CARDINALITY(subsystem_blacklist); i++) {
+ const char *s = subsystem_blacklist[i];
+ if (udev_enumerate_add_nomatch_subsystem(udev_enumerate, s) < 0) {
+ virReportSystemError(errno, "%s", _("failed to add susbsystem
filter"));
+ return -1;
+ }
+ }
+ return 0;
+}
+
+
static int udevEnumerateDevices(struct udev *udev)
{
struct udev_enumerate *udev_enumerate = NULL;
struct udev_list_entry *list_entry = NULL;
- int ret = 0;
+ int ret = -1;
udev_enumerate = udev_enumerate_new(udev);
+ if (udevEnumerateAddMatches(udev_enumerate) < 0)
+ goto cleanup;
ret = udev_enumerate_scan_devices(udev_enumerate);
if (ret != 0) {
--
2.7.3