| From 069cf14150b55e6580cf1d482709a0e48c36ee84 Mon Sep 17 00:00:00 2001 |
| From: Andrew Jorgensen <ajorgens@amazon.com> |
| Date: Wed, 25 Jul 2018 08:06:57 -0700 |
| Subject: [PATCH] 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 |
| |
| src/shared/sleep-config.c | 16 +++++++++++++--- |
| 1 file changed, 13 insertions(+), 3 deletions(-) |
| |
| diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c |
| index 9e4ce183d3..a1523e3f21 100644 |
| |
| |
| @@ -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); |