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

2018-04-26 Thread Andrei Borzenkov
26.04.2018 23:20, John Florian пишет:
> On 2018-04-26 16:04, John Florian wrote:
>> On 2018-04-25 04:53, Lennart Poettering wrote:
>>> 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.
>>
>> Having been the author of numerous custom services that are intended
>> to wedge into those provided by systemd/Fedora I've faced resolving
>> these several times and I've never felt all that competent at the
>> task.  Lennart, you were immensely helpful on one occasion by pointing
>> me to `systemctl show FOO` but even then hunting the problem down was
>> far from simple (for me).  I've done the dot/graphviz thing and found
>> it just as useless to me as when I've tried applying it to Puppet's
>> ordering/dependency looping. I'm not blaming those tools (or systemd)
>> because I'm well aware much of the problem is my inability to use them
>> effectively.  The graphs always seem to be overly simple and revealing
>> no problem or overly detailed and obscuring the problem.  Compound
>> that with "an arrow pointing this way means what exactly?"
>>
>> Is there anything else that could be done to make hunting these loops
>> down easier?  Is there an example of any product that has a similar
>> situation where they excel at helping the developer?  Or are we
>> already there and I just need more practice?  I'm sure part of my
>> struggle is just not encountering these very regularly and integrating
>> into much that I'm only partly familiar with, but the result is the
>> same, trepidation and loathing.
> 
> Since I hate to grumble w/o so much as offering any possible
> suggestions... It seems like it might be helpful to have something like
> `systemctl show` but only dumping the properties used for ordering and
> dependencies.  Ideally, only ordering OR dependencies as the case
> warrants and for all units involved, but only those units.

Well, you could use "systemctl show -p Id -p After -p Before" but the
problem is to find the correct unit set. You really need something that
simulates transaction and evaluates dependencies like systemd does it.

Note that systemd should print offending cycle when it hits it:

апр 27 06:54:14 bor-Latitude-E5450 systemd[1582]: foo.service: Found
ordering cycle on foo.service/start
апр 27 06:54:14 bor-Latitude-E5450 systemd[1582]: foo.service: Found
dependency on bar.service/start
апр 27 06:54:14 bor-Latitude-E5450 systemd[1582]: foo.service: Found
dependency on baz.service/start
апр 27 06:54:14 bor-Latitude-E5450 systemd[1582]: foo.service: Found
dependency on foo.service/start
апр 27 06:54:14 bor-Latitude-E5450 systemd[1582]: foo.service: Breaking
ordering cycle by deleting job baz.service/start


It would be helpful it if additionally printed kind of dependency (like
foo.service is After bar.service) because this is by far not obvious for
average user.
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel


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

2018-04-26 Thread John Florian

On 2018-04-26 16:04, John Florian wrote:

On 2018-04-25 04:53, Lennart Poettering wrote:

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.


Having been the author of numerous custom services that are intended 
to wedge into those provided by systemd/Fedora I've faced resolving 
these several times and I've never felt all that competent at the 
task.  Lennart, you were immensely helpful on one occasion by pointing 
me to `systemctl show FOO` but even then hunting the problem down was 
far from simple (for me).  I've done the dot/graphviz thing and found 
it just as useless to me as when I've tried applying it to Puppet's 
ordering/dependency looping. I'm not blaming those tools (or systemd) 
because I'm well aware much of the problem is my inability to use them 
effectively.  The graphs always seem to be overly simple and revealing 
no problem or overly detailed and obscuring the problem.  Compound 
that with "an arrow pointing this way means what exactly?"


Is there anything else that could be done to make hunting these loops 
down easier?  Is there an example of any product that has a similar 
situation where they excel at helping the developer?  Or are we 
already there and I just need more practice?  I'm sure part of my 
struggle is just not encountering these very regularly and integrating 
into much that I'm only partly familiar with, but the result is the 
same, trepidation and loathing.


Since I hate to grumble w/o so much as offering any possible 
suggestions... It seems like it might be helpful to have something like 
`systemctl show` but only dumping the properties used for ordering and 
dependencies.  Ideally, only ordering OR dependencies as the case 
warrants and for all units involved, but only those units.

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel


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

2018-04-26 Thread John Florian

On 2018-04-25 04:53, Lennart Poettering wrote:

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.


Having been the author of numerous custom services that are intended to 
wedge into those provided by systemd/Fedora I've faced resolving these 
several times and I've never felt all that competent at the task.  
Lennart, you were immensely helpful on one occasion by pointing me to 
`systemctl show FOO` but even then hunting the problem down was far from 
simple (for me).  I've done the dot/graphviz thing and found it just as 
useless to me as when I've tried applying it to Puppet's 
ordering/dependency looping.  I'm not blaming those tools (or systemd) 
because I'm well aware much of the problem is my inability to use them 
effectively.  The graphs always seem to be overly simple and revealing 
no problem or overly detailed and obscuring the problem.  Compound that 
with "an arrow pointing this way means what exactly?"


Is there anything else that could be done to make hunting these loops 
down easier?  Is there an example of any product that has a similar 
situation where they excel at helping the developer?  Or are we already 
there and I just need more practice?  I'm sure part of my struggle is 
just not encountering these very regularly and integrating into much 
that I'm only partly familiar with, but the result is the same, 
trepidation and loathing.

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel


Re: [systemd-devel] automount EFI system partition to /efi fails

2018-04-26 Thread Lennart Poettering
On Mi, 25.04.18 13:24, Chris Murphy (li...@colorremedies.com) wrote:

> What happens if /efi does not yet exist? I created it normally 'sudo
> mkdir /efi' before modifying /etc/fstab to comment out /boot/efi
> line.

Nothing. The generator that establishes this automount point becomes a
NOP unless:

  1. /efi exists
  2. /efi is empty
  3. There's no mount listed for it in /etc/fstab

Hence, if you want to make use of the automatic ESP mounting logic,
then simply create /etc and all should be good.

> So far as I know, installers don't create /efi (Fedora's installer
> does not) so that would be a needed feature. And then also things that
> modify /boot/efi need to be modified to use /efi instead. Some of this
> is abstracted with symlinks, e.g. Fedora uses symlink grub2-efi.cfg ->
> ../boot/efi/EFI/fedora/grub.cfg which is how grubby modifies it, but
> that can be changed to grub2-efi.cfg -> ../efi/EFI/fedora/grub.cfg -
> the bigger change is with the bootloader binaries needing updating,
> those packages have to know to look at both locations for the
> foreseeable future. Not too difficult, just a matter of doing it.

The automatic /efi magic is an offer to distributions, that allows
them to remove any kind of mount setup during distro install, and
exposes exceptionally safe access to the ESP (because it is umounted
shortly after every access though still appears mounted
continously). However, it's really just that: an offer. Fedora doesn't
use that by default last time I looked, though I wish it would. I
guess this needs a champion who pushes this through the fedora changes
bureaucracy.

I'd recommend Fedora to create /efi at boot, and then maintain a
compat symlink /boot/efi → ../efi to maintain compatibility with the
status quo ante. 

If fedora were to make that change, I figure some RPM postinst script
would have to rearrange things roughly like this:

```sh
sed -i -e '/\/boot\/efi/d' /etc/fstab
mkdir /efi
umount /boot/efi
rmdir /boot/efi
ln -s ../efi /boot/efi
```

Lennart

-- 
Lennart Poettering, Red Hat
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel