X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fdevice.c;h=19fc7451d8b7108d8e069f74cadeca84e4f40896;hb=e77f18939b849e636591309ef2f400b6dd537b60;hp=4ff7c37238a566b641e0ae87bb9f300dc6a156f7;hpb=9670d583d381d4c2c7f4d80de63bee7ad54fef44;p=elogind.git diff --git a/src/core/device.c b/src/core/device.c index 4ff7c3723..19fc7451d 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -264,6 +264,7 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p FOREACH_WORD_QUOTED(w, l, wants, state) { _cleanup_free_ char *n = NULL; char e[l+1]; + Unit *other; memcpy(e, w, l); e[l] = 0; @@ -277,6 +278,15 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true); if (r < 0) goto fail; + + other = manager_get_unit(u->manager, n); + if (!other || !unit_can_start(other)) + continue; + + r = manager_add_job(u->manager, JOB_START, other, JOB_REPLACE, true, NULL, NULL); + if (r < 0) + log_warning("Failed to add job %s/%s, ignoring: %s.", + other->id, job_type_to_string(JOB_START), strerror(-r)); } } }