logind: when we need to execute a sleep operation we don't support, fall back to suspend

If suspend-then-hibernate, hybrid-sleep or plain hibernation is
supposed to be execute due to a key press/lid switch but is not
supported, automatically fall back to plain suspend (and log about it).

Fixes: #10558
This commit is contained in:
Lennart Poettering 2018-11-16 21:44:36 +01:00
parent 14c4da2ffe
commit c282daed68

View file

@ -108,6 +108,14 @@ int manager_handle_action(
else
supported = true;
if (!supported && IN_SET(handle, HANDLE_HIBERNATE, HANDLE_HYBRID_SLEEP, HANDLE_SUSPEND_THEN_HIBERNATE)) {
supported = can_sleep("suspend") > 0;
if (supported) {
log_notice("Operation '%s' requested but not supported, using regular suspend instead.", handle_action_to_string(handle));
handle = HANDLE_SUSPEND;
}
}
if (!supported) {
log_warning("Requested operation not supported, ignoring.");
return -EOPNOTSUPP;