From: Andrew Jorgensen Date: Wed, 25 Jul 2018 15:06:57 +0000 (-0700) Subject: shared/sleep-config: exclude zram devices from hibernation candidates X-Git-Tag: v240~891 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=411ae92b407bd7b4549b205ad754bcd0e3dfd81f;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c index 9e4ce183d36..a1523e3f213 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);