On Wed, 2 Jan 2019, Jérémy Rosen wrote: > I'm pretty sure that there is something about Requires making a unit fail if > it's dependency has already failed when it is scheduled for startup... > > Again I may be wrong... On Wed, 2 Jan 2019, Michael Chapman wrote >Make of that what you will. I was expecting a.service to stop because >b.service failed, but apparently my understanding of this isn't quite >right. Requires= alone without After= has interesting interaction with systemd's job machinery. When you use Requires= alone, say from a to b (as in Michael's example), two start jobs will be queued for both as part of the transaction, but the one for a will not wait for the one for b to complete running. Therefore, both go in parallel, and at one point, if a completes before b, it will start up as usual. However, if b fails before a completes, the start job for a is canceled with JOB_DEPENDENCY job result. Hence, in your case, the job is dispatched right away and completes before b fails. This is also why targets that usually gain deps through filesystem symlinks have an implicit ordering by default, as defining ordering through that mechanism is not possible. Now, answering why explicitly stopping b stops a? This is how Requires= is actually supposed to work. Infact, this is perhaps the only noticeable difference for end users between Requires= and BindsTo= (however there are a few other things to keep in mind). - Jonathon Kowalski _______________________________________________ systemd-devel mailing list systemd-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/systemd-devel