mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
util: relax requirement for logind to be running
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 Reviewed-by: Peter Krempa <pkrempa@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
38abf9c34d
commit
29f2222dd5
@ -184,9 +184,21 @@ virSystemdHasLogind(void)
|
|||||||
return ret;
|
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)
|
if ((ret = virGDBusIsServiceRegistered("org.freedesktop.login1")) == -1)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
if (ret == -2) {
|
||||||
|
if ((ret = virGDBusIsServiceRegistered("org.freedesktop.systemd1")) == -1)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
g_atomic_int_set(&virSystemdHasLogindCachedValue, ret);
|
g_atomic_int_set(&virSystemdHasLogindCachedValue, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user