Lennart Poettering [2015-02-04 16:38 +0100]: > Sure, I can only recommend again: in the the glue code that calls out > to "systemctl" from "service", you can add the code to use --no-block > or --job-mode=ignore-dependencies , if you notice you are in shutdown > mode...
Yeah, I agree that given all the options that's the best heuristics for now. > > > Modern code, that talks directly to systemctl, that uses hook scripts, > > > should always use --no-block for these cases. > > > > Yeah, for sure. We just don't have that luxury easily, as first these > > scripts don't call systemctl but "service" (for the Debianists: or > > invoke-rc.d, but same difference), it will take some time to find > > all these occurrences, and people will hate us for having to add stuff > > like > > > > if (running under systemd) > > systemctl --no-block reload foo > > else > > service foo reload > > I am not proposing anything like that. Right, this was just a reply to "modern code that talks directly to systemctl", and we can't do that while we support more than one init system. Sorry for the misunderstanding. > > > > - Don't enqueue a reload if the service to be reloaded isn't running. > > > > E. g. postfix.service "inactive/dead" in > > > > https://bugs.debian.org/635777 or smbd.service "start/waiting" in > > > > https://launchpad.net/bugs/1417010. This would completely avoid > > > > the deadlock in most situations already, and doesn't change the > > > > semantics for working use cases either, so this should even be > > > > applicable for upstream? For the record, this was already discussed here: http://lists.freedesktop.org/archives/systemd-devel/2014-July/021457.html continuation: http://lists.freedesktop.org/archives/systemd-devel/2014-August/022048.html > I mean, if you want precise sysv semantics you can just use > --job-mode=ignore-dependencies always, since sysv ignore all deps too > when sysv scripts are involved. "Always" sounds rather unsafe to me, as we would totally ignore a unit's Requires/Wants= then. Doing it if !systemctl is-system-running sounds ok. > I'd strongly encourage you to work around this on client side in the > sysv glue, not breaking the guarantess that systemd-aware code needs > when issuing commands. Yes, I prefer that as well. (That's what I meant with "distro side"..) Thanks, Martin -- Martin Pitt | http://www.piware.de Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org) _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel