From ffd90200b2e74e5d65738f3f521f8c3bdd6db4cf Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Thu, 13 Jun 2024 11:01:03 +0200 Subject: [PATCH] core/cgroup: actually make use of the cached accounting values If cgroup is already gone, i.e. CGRuntime.cgroup_path is NULL, do not return -ENODATA prematurely, but check for cached values first. For #33149 (cherry picked from commit 3849d1f56b7ff9db94656ca84156eb9fe1574ecb) --- src/core/cgroup.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 34fd2a250c..81d044b123 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -4646,11 +4646,11 @@ int unit_get_cpu_usage(Unit *u, nsec_t *ret) { * started. If the cgroup has been removed already, returns the last cached value. To cache the value, simply * call this function with a NULL return value. */ - CGroupRuntime *crt = unit_get_cgroup_runtime(u); - if (!crt || !crt->cgroup_path) + if (!UNIT_CGROUP_BOOL(u, cpu_accounting)) return -ENODATA; - if (!UNIT_CGROUP_BOOL(u, cpu_accounting)) + CGroupRuntime *crt = unit_get_cgroup_runtime(u); + if (!crt) return -ENODATA; r = unit_get_cpu_usage_raw(u, &ns); @@ -4694,7 +4694,7 @@ int unit_get_ip_accounting( return -ENODATA; CGroupRuntime *crt = unit_get_cgroup_runtime(u); - if (!crt || !crt->cgroup_path) + if (!crt) return -ENODATA; fd = IN_SET(metric, CGROUP_IP_INGRESS_BYTES, CGROUP_IP_INGRESS_PACKETS) ? @@ -4869,7 +4869,7 @@ int unit_get_io_accounting( return -ENODATA; CGroupRuntime *crt = unit_get_cgroup_runtime(u); - if (!crt || !crt->cgroup_path) + if (!crt) return -ENODATA; if (allow_cache && crt->io_accounting_last[metric] != UINT64_MAX) -- 2.25.1