From ef7698f7aaef4b8fd98c31c8563e55f237968207 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 6 Aug 2025 12:42:27 +0900 Subject: [PATCH 1/2] user-runtime-dir: skip setting quota if not requested Fixes the following spurious warning: systemd-user-runtime-dir[865]: Failed to set disk quota limit to '15.9P' on /tmp for UID 991, ignoring: Numerical result out of range Fixes #38493. --- src/login/user-runtime-dir.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/login/user-runtime-dir.c b/src/login/user-runtime-dir.c index efcf36f2cc..0de95583cb 100644 --- a/src/login/user-runtime-dir.c +++ b/src/login/user-runtime-dir.c @@ -210,6 +210,11 @@ static int apply_tmpfs_quota( assert(uid_is_valid(uid)); STRV_FOREACH(p, paths) { + if (limit == UINT64_MAX && scale == UINT32_MAX) { + log_debug("No disk quota on '%s' is requested.", *p); + continue; + } + _cleanup_close_ int fd = open(*p, O_DIRECTORY|O_CLOEXEC); if (fd < 0) { log_warning_errno(errno, "Failed to open '%s' in order to set quota, ignoring: %m", *p); From 6d30c40d6cf9cb89b1864fb8b84e8dbac7248bfd Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 6 Aug 2025 12:45:45 +0900 Subject: [PATCH 2/2] user-runtime-dir: fix logged quota size 'v' is a number of blocks, rather than bytes. --- src/login/user-runtime-dir.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/login/user-runtime-dir.c b/src/login/user-runtime-dir.c index 0de95583cb..b80723b97e 100644 --- a/src/login/user-runtime-dir.c +++ b/src/login/user-runtime-dir.c @@ -289,7 +289,8 @@ static int apply_tmpfs_quota( log_debug_errno(r, "Lacking privileges to set UID quota on %s, skipping: %m", *p); continue; } else if (r < 0) { - log_warning_errno(r, "Failed to set disk quota limit to '%s' on %s for UID " UID_FMT ", ignoring: %m", FORMAT_BYTES(v), *p, uid); + log_warning_errno(r, "Failed to set disk quota limit to %s on %s for UID " UID_FMT ", ignoring: %m", + FORMAT_BYTES(v * QIF_DQBLKSIZE), *p, uid); continue; }