On Wed, Jun 21, 2023 at 14:32:30 +0100, Daniel P. Berrangé wrote: > Historically we wanted to check if logind was actually running, not > merely activatable, because on systems where systemd is installed, > but the OS is booted into non-systemd init, we want to fallback to > pm-utils. > > Requiring logind to be running, however, forces us to serialize libvirtd > startup on startup of logind which is undesirable. We can relax this > dependancy if we check whether systemd itself is running, which implies > that logind will activated when we need it. > > https://gitlab.com/libvirt/libvirt/-/issues/489 > Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> > --- > src/util/virsystemd.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c > index 3112a1ba80..cd4de0eef8 100644 > --- a/src/util/virsystemd.c > +++ b/src/util/virsystemd.c > @@ -184,9 +184,21 @@ virSystemdHasLogind(void) > return ret; > } > > + /* > + * Want to use logind if: > + * - logind is already running > + * Or > + * - logind is not running, but this is a systemd host > + * (rely on dbus activation) > + */ > if ((ret = virGDBusIsServiceRegistered("org.freedesktop.login1")) == -1) > return ret; > > + if (ret == -2) { > + if ((ret = virGDBusIsServiceRegistered("org.freedesktop.systemd1")) == -1) > + return ret; > + } Why not simply just check that we are on a systemd host? Can logind be used without systemd?