summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Jorgensen <ajorgens@amazon.com>2018-07-25 08:06:57 -0700
committerThe Plumber <50238977+systemd-rhel-bot@users.noreply.github.com>2019-10-22 16:31:04 +0200
commit069cf14150b55e6580cf1d482709a0e48c36ee84 (patch)
tree074754878ff0546674d6e58a4a371e5790cafbbb
parent27d1acaa1d4c9299db461f0f1922c573be6a52c0 (diff)
downloadsystemd-069cf14150b55e6580cf1d482709a0e48c36ee84.tar.gz
shared/sleep-config: exclude zram devices from hibernation candidates
On a host with sufficiently large zram but with no actual swap, logind will respond to CanHibernate() with yes. With this patch, it will correctly respond no, unless there are other swap devices to consider. (cherry picked from commit 411ae92b407bd7b4549b205ad754bcd0e3dfd81f) Resolves: #1763617
-rw-r--r--src/shared/sleep-config.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
index 9e4ce183d3..a1523e3f21 100644
--- a/src/shared/sleep-config.c
+++ b/src/shared/sleep-config.c
@@ -21,6 +21,7 @@
#include "log.h"
#include "macro.h"
#include "parse-util.h"
+#include "path-util.h"
#include "sleep-config.h"
#include "string-util.h"
#include "strv.h"
@@ -201,9 +202,18 @@ int find_hibernate_location(char **device, char **type, size_t *size, size_t *us
continue;
}
- if (streq(type_field, "partition") && endswith(dev_field, "\\040(deleted)")) {
- log_warning("Ignoring deleted swapfile '%s'.", dev_field);
- continue;
+ if (streq(type_field, "partition")) {
+ if (endswith(dev_field, "\\040(deleted)")) {
+ log_warning("Ignoring deleted swapfile '%s'.", dev_field);
+ continue;
+ }
+
+ const char *fn;
+ fn = path_startswith(dev_field, "/dev/");
+ if (fn && startswith(fn, "zram")) {
+ log_debug("Ignoring compressed ram swap device '%s'.", dev_field);
+ continue;
+ }
}
if (device)
*device = TAKE_PTR(dev_field);