]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fix reload propagation for device alias
authorJérémy Rosen <jeremy.rosen@enst-bretagne.fr>
Sat, 6 Jan 2018 21:55:22 +0000 (22:55 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 22 Jan 2018 18:53:55 +0000 (19:53 +0100)
udev-made .device aliases are not normal alias

They are full-fledged units which are linked to
the same sysfs path

we need to explicitely propagate reload to all
alias

src/core/device.c

index dec6e74f951b2cf0040f75dbc3ab2d6ec631c2de..7ce971ff3b05a7863612d29fc4f3c00aa354f565 100644 (file)
@@ -798,12 +798,11 @@ static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
         if (streq(action, "change"))  {
                 _cleanup_free_ char *e = NULL;
                 Unit *u;
+                Device *d, *l, *n;
 
-                r = unit_name_from_path(sysfs, ".device", &e);
-                if (r < 0)
-                        log_error_errno(r, "Failed to generate unit name from device path: %m");
-                else {
-                        u = manager_get_unit(m, e);
+                l = hashmap_get(m->devices_by_sysfs, sysfs);
+                LIST_FOREACH_SAFE(same_sysfs, d, n, l) {
+                        u = &d->meta;
                         if (u && UNIT_VTABLE(u)->active_state(u) == UNIT_ACTIVE) {
                                 r = manager_propagate_reload(m, u, JOB_REPLACE, NULL);
                                 if (r < 0)