On Thu, 05.12.13 14:38, Zbigniew Jędrzejewski-Szmek (zbys...@kemper.freedesktop.org) wrote:
> src/core/device.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > New commits: > commit e775289d56ace2f8d23e62ed79316d71332d6d05 > Author: Zbigniew J??drzejewski-Szmek <zbys...@in.waw.pl> > Date: Thu Dec 5 00:41:12 2013 -0500 > > systemd: add a start job for all units in SYSTEMD_[USER_]WANTS= > > diff --git a/src/core/device.c b/src/core/device.c > index 4ff7c37..19fc745 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)); What's the rationale here? We already add UNIT_WANTS dependencies, that should be all that is needed. When the device is set to PLUGGED state, then via unit_notify we should end up starting the UNIT_WANTS units "retroactively" via retroactively_start_dependencies(). If this didn't work correctly, then we need to fix this, but please don't tape over this by adding both deps and queueing jobs. Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel