summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2020-08-19 17:05:44 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-08-20 13:12:02 +0200
commit5d1e68b49489574ef57947c5f1adfc761547eea9 (patch)
tree21f51bba2fb9fe3f3cf797e58fc7f0d40f5a88c1
parentec673ad4ab53c508f252b58bd1ad7af3902abfbf (diff)
downloadsystemd-5d1e68b49489574ef57947c5f1adfc761547eea9.tar.gz
user-runtime-dir: deal gracefully with missing logind properties
Fixes: #16685
-rw-r--r--src/login/user-runtime-dir.c15
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;
}