mirror of
https://github.com/clearlinux/systemd-stable.git
synced 2026-10-03 15:30:38 +00:00
core,logind,networkd: check for udev device initialization via enumeration matches
Instead of checking each device after we got it, check wuth an enumeration filter instead, to make it more efficient.
This commit is contained in:
+4
-8
@@ -303,14 +303,6 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
|
||||
|
||||
assert(m);
|
||||
|
||||
#if 0
|
||||
/* FIXME: this is always false for devices received from udev_monitor */
|
||||
|
||||
/* Don't pick up devices before udev finished initialization for them */
|
||||
if (!udev_device_get_is_initialized(dev))
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
sysfs = udev_device_get_syspath(dev);
|
||||
if (!sysfs)
|
||||
return 0;
|
||||
@@ -557,6 +549,10 @@ static int device_enumerate(Manager *m) {
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
r = udev_enumerate_add_match_is_initialized(e);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
r = udev_enumerate_scan_devices(e);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
||||
@@ -210,6 +210,10 @@ int devnode_acl_all(struct udev *udev,
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = udev_enumerate_add_match_is_initialized(e);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = udev_enumerate_scan_devices(e);
|
||||
if (r < 0)
|
||||
return r;
|
||||
@@ -223,9 +227,6 @@ int devnode_acl_all(struct udev *udev,
|
||||
if (!d)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!udev_device_get_is_initialized(d))
|
||||
continue;
|
||||
|
||||
sn = udev_device_get_property_value(d, "ID_SEAT");
|
||||
if (isempty(sn))
|
||||
sn = "seat0";
|
||||
|
||||
+8
-6
@@ -198,6 +198,10 @@ static int manager_enumerate_devices(Manager *m) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = udev_enumerate_add_match_is_initialized(e);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = udev_enumerate_scan_devices(e);
|
||||
if (r < 0)
|
||||
return r;
|
||||
@@ -211,9 +215,6 @@ static int manager_enumerate_devices(Manager *m) {
|
||||
if (!d)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!udev_device_get_is_initialized(d))
|
||||
continue;
|
||||
|
||||
k = manager_process_seat_device(m, d);
|
||||
if (k < 0)
|
||||
r = k;
|
||||
@@ -249,6 +250,10 @@ static int manager_enumerate_buttons(Manager *m) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = udev_enumerate_add_match_is_initialized(e);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = udev_enumerate_scan_devices(e);
|
||||
if (r < 0)
|
||||
return r;
|
||||
@@ -262,9 +267,6 @@ static int manager_enumerate_buttons(Manager *m) {
|
||||
if (!d)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!udev_device_get_is_initialized(d))
|
||||
continue;
|
||||
|
||||
k = manager_process_button_device(m, d);
|
||||
if (k < 0)
|
||||
r = k;
|
||||
|
||||
@@ -170,7 +170,10 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
|
||||
r = udev_enumerate_add_match_tag(e, seat);
|
||||
else
|
||||
r = udev_enumerate_add_match_tag(e, "seat");
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = udev_enumerate_add_match_is_initialized(e);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -171,6 +171,10 @@ int manager_udev_enumerate_links(Manager *m) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = udev_enumerate_add_match_is_initialized(e);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = udev_enumerate_scan_devices(e);
|
||||
if (r < 0)
|
||||
return r;
|
||||
@@ -184,9 +188,6 @@ int manager_udev_enumerate_links(Manager *m) {
|
||||
if (!d)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!udev_device_get_is_initialized(d))
|
||||
continue;
|
||||
|
||||
k = manager_process_link(m, d);
|
||||
if (k < 0)
|
||||
r = k;
|
||||
|
||||
Reference in New Issue
Block a user