On Tue, 01.06.10 15:25, Bill Nottingham (notting@xxxxxxxxxx) wrote: > Lennart Poettering (mzerqung@xxxxxxxxxxx) said: > > > > Requires=basic.target sockets.target dbus.socket > > > > After=basic.target sockets.target dbus.socket > > > > > > What does this goop mean and why is it necessary? > > > > basic.target encapsulates the early boot process (kinda the same stuff > > rc.sysinit currently does). The Requires= make sure that this is pulled > > in by dbus.service. The After= makes sure that it has finished before we > > fork dbus. > > How are these evaluated differently that you'd need to list both 'Requires' > and 'After', as opposed to just one? (I would think Requires would imply > After.) Well, in systemd ordering dependencies are independent of requirement independencies. Explanation: A requires B means that when A is started B is started too, at the same time. A after B means that when A is started and B is started as well, then B is started first and only when that finished A is started too. Now, if you combine both, then you get A requires B + A after B, which means that when A is started we first start B and when that is finished wwe load A too. There are use-cases for all three cases listed above, so we thought we cover this in just two dependency types, instead of three. (And in fact actually, since we have "requires" and "requisite" too, this saves us quite a few additional types) Now, since base.target is pulled in by the default boot target anyway, one could argue that in this case an After= would suffice, and the requires= is redundant. But uh, on a logical level base.target is actually required, so we should list both elements I think. Lennart -- Lennart Poettering Red Hat, Inc. lennart [at] poettering [dot] net http://0pointer.net/lennart/ GnuPG 0x1A015CC4 -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel