On Thu, Jun 22, 2023 at 09:49:41AM +0100, Daniel P. Berrangé wrote:
On Thu, Jun 22, 2023 at 10:23:57AM +0200, Peter Krempa wrote:
> On Wed, Jun 21, 2023 at 14:32:30 +0100, Daniel P. Berrangé wrote:
> > + /*
> > + * 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?
I believe it can. I recall that when Debian supported a choice between
systemd and sysvinit, logind could still be used in the sysvinit
scenario in order to support GNOME which had a mandatory dep on logind.
So I wasn't comfortable entirely removing the check for logind.
Yeah, there's an alternative/hacked implementation called elogind
which can be used without systemd. On a Debian VM configured to use
the classic sysvinit, for example, I get
$ dbus-send --system --print-reply --dest=org.freedesktop.DBus
/org/freedesktop/DBus org.freedesktop.DBus.ListNames
method return time=1687442871.393925 sender=org.freedesktop.DBus ->
destination=:1.4 serial=3 reply_serial=2
array [
string "org.freedesktop.DBus"
string "org.freedesktop.login1"
string ":1.4"
string ":1.0"
string ":1.1"
]
Now the interesting question is whether we will (and should) run any
of the code in the virsystemd module on such a machine...
--
Andrea Bolognani / Red Hat / Virtualization