[systemd-devel] [PATCHv2] core: do not spawn jobs or touch other units during coldplugging

Andrei Borzenkov arvidjaar at gmail.com
Fri Apr 24 11:39:02 PDT 2015


В Fri, 24 Apr 2015 20:19:33 +0200
Lennart Poettering <lennart at poettering.net> пишет:

> On Fri, 24.04.15 20:46, Ivan Shapovalov (intelfx100 at gmail.com) wrote:
> 
> > On 2015-04-24 at 19:13 +0200, Lennart Poettering wrote:
> > > On Fri, 24.04.15 20:06, Ivan Shapovalov (intelfx100 at gmail.com) wrote:
> > > 
> > > > With this patch applied, on `systemctl daemon-reload` I get the
> > > > following:
> > > 
> > > Any chance you can do the same with debugging on? "systemd-analyze
> > > set-log-level debug" right before the daemon-reload?
> > > 
> > > That should show the transaction being queued in.
> > 
> > Sure, I've ran it (log attached), but well... it did not show
> > any new jobs being enqueued. But alsa-restore.service _did_ run and
> > did reset my ALSA volume to the bootup value.
> > 
> > Pretty confused,
> 
> Note that starting services is recursive: if a service is enqueued,
> then we add all its dependencies to the transaction, verify that the
> transaction is without cycles and can be applied, and then actually
> apply it.
> 
> This means, that starting a service foo.service, that requires
> bar.target, that requires waldo.service, will mean that waldo.service
> is also started, even if bar.target is already started anyway.
> 

I was sure that on reload systemd simply restores previous state of
services. Why it attempts to start anything in the first place?

It makes reload potentially dangerous; what if service was stopped on
purpose and should remain this way?


More information about the systemd-devel mailing list