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; + } + g_atomic_int_set(&virSystemdHasLogindCachedValue, ret); return ret; }