diff options
author | Lennart Poettering <lennart@poettering.net> | 2020-08-19 17:05:44 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2020-08-20 13:12:02 +0200 |
commit | 5d1e68b49489574ef57947c5f1adfc761547eea9 (patch) | |
tree | 21f51bba2fb9fe3f3cf797e58fc7f0d40f5a88c1 | |
parent | ec673ad4ab53c508f252b58bd1ad7af3902abfbf (diff) | |
download | systemd-5d1e68b49489574ef57947c5f1adfc761547eea9.tar.gz |
user-runtime-dir: deal gracefully with missing logind properties
Fixes: #16685
-rw-r--r-- | src/login/user-runtime-dir.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/login/user-runtime-dir.c b/src/login/user-runtime-dir.c index 38058d7b2a..8ba916f05e 100644 --- a/src/login/user-runtime-dir.c +++ b/src/login/user-runtime-dir.c @@ -7,9 +7,10 @@ #include "bus-error.h" #include "dev-setup.h" -#include "fs-util.h" #include "format-util.h" +#include "fs-util.h" #include "label.h" +#include "limits-util.h" #include "main-func.h" #include "mkdir.h" #include "mountpoint-util.h" @@ -32,12 +33,16 @@ static int acquire_runtime_dir_properties(uint64_t *size, uint64_t *inodes) { return log_error_errno(r, "Failed to connect to system bus: %m"); r = sd_bus_get_property_trivial(bus, "org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", "RuntimeDirectorySize", &error, 't', size); - if (r < 0) - return log_error_errno(r, "Failed to acquire runtime directory size: %s", bus_error_message(&error, r)); + if (r < 0) { + log_warning_errno(r, "Failed to acquire runtime directory size, ignoring: %s", bus_error_message(&error, r)); + *size = physical_memory_scale(10U, 100U); /* 10% */ + } r = sd_bus_get_property_trivial(bus, "org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", "RuntimeDirectoryInodesMax", &error, 't', inodes); - if (r < 0) - return log_error_errno(r, "Failed to acquire number of inodes for runtime directory: %s", bus_error_message(&error, r)); + if (r < 0) { + log_warning_errno(r, "Failed to acquire number of inodes for runtime directory, ignoring: %s", bus_error_message(&error, r)); + *inodes = DIV_ROUND_UP(*size, 4096); + } return 0; } |