On Tue, 2015-03-24 at 09:33 +1100, Jonathan Liu wrote: > I am not sure how well systemd works with executing systemctl to > manipulate services from within a service that is starting... > > What is the definition of foobar.service?
Manipulating services within a service works. You were on the right track when suspecting a dependency deadlock. > foobar.service may depend on other services/mounts/targets to start > before it but since "systemctl start" is blocking, those dependencies > may not be satisfied yet until sometime after run-postinsts.service > which can result in a circular dependency deadlock. See > DefaultDependencies, After, Before in > http://www.freedesktop.org/software/systemd/man/systemd.unit.html. > > Things to try: > 1. Refactor foobar.service and your image recipe to not require calling > systemctl from within a systemd service > 2. Change "systemctl start foobar" to "systemctl start --no-block > foobar" to let the startup continue without waiting until foobar is started "--no-block" did indeed help. The recipe uses only the default dependencies, but that already seems enough to prevent starting it at the time when run-postinsts.service runs. I guess the situation hasn't come up before. But when it does, it probably breaks systemd.bbclass for most services. I wonder whether --no-block should be added unconditionally to systemd.bblcass' "systemctl start" invocation? -- Best Regards, Patrick Ohly The content of this message is my personal opinion only and although I am an employee of Intel, the statements I make here in no way represent Intel's position on the issue, nor am I authorized to speak on behalf of Intel on this matter. -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core