
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