|
Bugzilla – Full Text Bug Listing |
| Summary: | Two dependencies wrong between systemd units (IMHO) | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE Tumbleweed | Reporter: | Dr. Werner Fink <werner> |
| Component: | Basesystem | Assignee: | Frederic Crozat <fcrozat> |
| Status: | RESOLVED FIXED | QA Contact: | E-mail List <qa-bugs> |
| Severity: | Normal | ||
| Priority: | P5 - None | ||
| Version: | 13.1 Milestone 1 | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | SUSE Other | ||
| Whiteboard: | |||
| Found By: | Development | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
a) localfs.service is a dummy service written to "hide" boot.localfs initscript (since this job is handled by systemd itself). But if we put Before=local-fs.target in it, initscripts which have a dependency on boot.localfs (such as boot.cycle, boot.dmraid) could be called by systemd before local-fs.target is reached, ie before all mount points needed to have "local-fs" are started properly. b) I've just checked upstream .service for NetworkManager and we are missing "Before=network.target" in NetworkManager.service (In reply to comment #1) > a) localfs.service is a dummy service written to "hide" boot.localfs initscript > (since this job is handled by systemd itself). But if we put > Before=local-fs.target in it, initscripts which have a dependency on > boot.localfs (such as boot.cycle, boot.dmraid) could be called by systemd > before local-fs.target is reached, ie before all mount points needed to have > "local-fs" are started properly. Does this mean that systemd is ignoring # X-Start-Before: boot.localfs of the boot.dmraid script and the # Required-Start: boot.localfs of the boot.cycle script? Within SysV and insserv the two lines caused an indirect dependency that is that $local_fs aka local-fs.target enclose not only the boot.localfs and optional the boot.crypto but also boot.dmraid and boot.cycle. This is an autogenerated message for OBS integration: This bug (789421) was mentioned in https://build.opensuse.org/request/show/142583 Factory / insserv This is an autogenerated message for OBS integration: This bug (789421) was mentioned in https://build.opensuse.org/request/show/142598 Factory / insserv This is an autogenerated message for OBS integration: This bug (789421) was mentioned in https://build.opensuse.org/request/show/142923 Factory / insserv (In reply to comment #2) > Does this mean that systemd is ignoring > > # X-Start-Before: boot.localfs > > of the boot.dmraid script No, boot.dmraid is correctly ordered : systemctl show dmraid.service | grep Before Before=local-fs-pre.target localfs.service lvm.service > and the > > # Required-Start: boot.localfs > > of the boot.cycle script? systemctl show cycle.service | grep After After=localfs.service loadmodules.service systemd-journald.socket (and since localfs.service is after local-fs.target, we are safe) > Within SysV and insserv the two lines caused an > indirect dependency that is that $local_fs aka local-fs.target enclose not only > the boot.localfs and optional the boot.crypto but also boot.dmraid and > boot.cycle. I changed insserv parsing code in systemd to always ignore boot.crypto and boot.localfs when parsing insserv.conf because they are handled "internally" by systemd (and were causing errors in systemd output). ... and I've remapped the local-fs.target aka the `$local_fs' facility for the localfs.service aka boot.localfs from After to Before to have a correct order chain for localfs in insserv. This seems to work. If the NetworkManager dependency rules is corrected now we may close this bug as fixed. Do you agree? (In reply to comment #7) > If the NetworkManager dependency rules is corrected now we may close this bug > as fixed. Do you agree? let me fix this one first :) fix for NetworkManager pushed as sr#144435 This is an autogenerated message for OBS integration: This bug (789421) was mentioned in https://build.opensuse.org/request/show/144476 Factory / NetworkManager |
During debuging insserv with dbus call to systemd I've detected two dependencies which cold be wrong: a) in /lib/systemd/system/localfs.service the line After=local-fs.target should be Before=local-fs.target as the target `local-fs.target' is similar to `$local_fs' from LSB b) the insserv soriting algorithm shows insserv: There is a loop between service NetworkManager and NetworkManager-wait-online if started and indeed running systemctl dot | grep -i network | less shows: "network.target"->"NetworkManager-wait-online.service" [color="darkgrey"]; "NetworkManager-wait-online.service"->"network.target" [color="darkgrey"];