[systemd-devel] `Found ordering cycle on _SERVICE_` loops due to `local-fs.target` with `Requires` instead of `Wants` for mounts generated from `/etc/fstab`

Lennart Poettering lennart at poettering.net
Wed Apr 25 08:53:33 UTC 2018


On Di, 24.04.18 19:26, Alexey Matyushin (airgunster at protonmail.ch) wrote:

> 
>                 server.domain:/         /mnt/test       nfs4  nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0
>                 /mnt/some_other_mount/  /mnt/test/medi  none  bind,rw 0 0
>                 ```
> 
> Question, I know that this issue with dependency loop on
> `local-fs.target` can be corrected by `nofail`/`_netdev` options in
> `/etc/fstab` file for all local shares (as then all local mounts
> will be only wanted (`Wants` parameter), and not required
> (`Requires` parameter) by `local-fs.target), but my question is
> about behavior without these options specified, do you think that
> this (explained) behavior is correct?
> 
> This looks for me as quite dangerous behavior (without
> `nofail`/`_netdev` options) since in this scenario we may delete
> start jobs for up to 10 different services/targets (including
> network stack (`network.service`)), here is the full list of
> possible services/targets which may never start due to this issue
> (ordering cycle (loop)),

Yeah, when dependency cycles are detected systemd will try to fix
them, by dropping jobs from the reaction. This algorithm might not do
what people would like it to do though, as there's no metric for
knowing which one is the least important job, and hence the one to
drop.

There have been requests in improving the cycle breaking algorithm,
but not much has been done in this area, since it's not clear what can
be done. Ultimately it's just polishing a broken situation, and
the better way out is to fix things properly, i.e. just correct the
cycle in the dependencies in the first place.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list