[systemd-devel] Requires and After

Reindl Harald h.reindl at thelounge.net
Wed Jan 2 03:33:26 UTC 2019



Am 02.01.19 um 04:13 schrieb James Feeney:
>> It's about Requires and After. I think a unit in Requires should imply
>> that unit in After too, otherwise the requirement isn't really met.
>> Is there a use case for Requires but not After?
> 
> Olaf, previously, on GitHub, you had said:
> 
>>> I think I understand Requires and After ...
> 
> and, I would suggest that, no - or you would not be asking this question.
> 
> systemd has two different classes of "dependencies": 1) "activation" dependencies, and 2) "ordering" dependencies.
> 
> An activation dependency does not, a priori, have to obey any rules about ordering.  There are not, automatically, any promises or guarantees about in what order service units, for instance, might be queued for execution, based upon a Requires= dependency.
> 
> "Ordering" is an independent characteristic from "Activation".  "Activation" only promises to enqueue a unit, and then, only if the unit is some kind of unit that can be "executed", such as a timer or service unit.  In contrast, for instance, systemd is only a "passive observer" of a device unit.  "enqueuing" a device unit for "activation" would make no sense in this context.  A *service* unit that *creates* a device unit could be enqueued for activation, but not the device unit itself.

but this has no logic at all

"After" is a soft dependency, if that unit isn't enabled or don#t exist
at all it don't matter

"Requires" is a hard dependency and it makes no sense not imply ordering




More information about the systemd-devel mailing list