Passive vs Active targets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I'm successully using systemd with some non trivial (for me!) unit dependencies including some performing:

  custom local disk formatting and mounting at boot
additionnal nics configuration by running postscripts fetched from the network
  Infiniband initialisation
  NFS remote mounts
  Infiniband remote mounts
  HPC scheduler and its side services activation

and I've read https://www.freedesktop.org/software/systemd/man/systemd.special.html

Still I do not fully (or at all ?) understand the concept of passive vs active targets and some related points:

The link above states :

"Note specifically that these passive target units are generally not pulled in by the consumer of a service, but by the provider of the service. This means: a consuming service should order itself after these targets (as appropriate), but not pull it in. A providing service should order itself before these targets (as appropriate) and pull it in (via a Wants= type dependency)."

nd also :

"Note that these passive units cannot be started manually, i.e. "systemctl start time-sync.target" will fail with an error. They can only be pulled in by dependency."

Since my first look at a passive dependency was network.target which I indeed saw was pulled in by NetworkManager.service which ordered itself Before it and which I compared with the active network-online.target which pulls in the NetworkManager-wait-online.service I first deduced the following:

a) a passive target "does" nothing and serves only as an ordering checkpoint
b) an active target "does" actually something

I thought that a passive target could be seen as "published" by the corresponding provider
But this does not seems as simple as that:

For one I see on my system that rsyslog.service also pulls in network.target (but orders itself After it and thus does not seeems to be the actual "publisher" of it as opposed the NetworkManager.service)

Then rpcbind.target seems to auto pull itself so without the Before ordering we see in the NetworkManager.service pulling network.target example

Also, it seems that there are more than one way to pull in a passive dependency (or maybe several providers which can "publish" it). Like for instance network-pre.target wich is pulled in by both nftables.service and/or rdma-ndd.service.

Finally, my understanding is some passive targets are not to be taken for granted, i.e. they may not be pulled in at all and it is to the user to check it if actually is the case if he want to order a unit againt it. I'm not talking here about obvious targets we don't have because out of our scope (like not having remote mounts related targets if system is purely local) but some we could think we have but maybe not. For instance on my system I see remote-fs-pre.target pulled in by nfs-client.target but would be remote-fs-pre-target be pulled in (by who?) if I had only Infiniband remote mounts ?

So my question would revolve around the above points

Can you help me figuring out the correct way to see those concepts ?

Thanks for your help

--
Thomas HUMMEL




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux