chiark / gitweb /
shared/sleep-config: return a custom message when not enough swap for hibernation
[elogind.git] / src / shared / sleep-config.c
index 210e753c4f56f2a09d3f76e73960ed7279a21908..28d19c59b70e201cd754aac08dcc672e081c6c8c 100644 (file)
@@ -380,12 +380,12 @@ static bool can_s2h(void) {
 
         FOREACH_STRING(p, "suspend", "hibernate") {
                 r = can_sleep(p);
-                if (r < 0)
-                        return log_debug_errno(r, "Failed to check if %s is possible: %m", p);
-                if (r == 0) {
+                if (IN_SET(r, 0, -ENOSPC)) {
                         log_debug("Unable to %s system.", p);
                         return false;
                 }
+                if (r < 0)
+                        return log_debug_errno(r, "Failed to check if %s is possible: %m", p);
         }
 
         return true;
@@ -426,5 +426,12 @@ int can_sleep(const char *verb) {
                 return false;
 
         return streq(verb, "suspend") || enough_memory_for_hibernation();
+        if (streq(verb, "suspend"))
+                return true;
+
+        if (!enough_memory_for_hibernation())
+                return -ENOSPC;
+
+        return true;
 }
 #endif // 0