From: Mike Yuan Date: Mon, 13 Nov 2023 13:27:29 +0000 (+0800) Subject: core: add unit_reset_{memory,io}_accounting_last X-Git-Tag: v255-rc2~20^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F30007%2Fhead;p=thirdparty%2Fsystemd.git core: add unit_reset_{memory,io}_accounting_last --- diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 4e4b668f62c..5b0cb15c85c 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -4373,6 +4373,13 @@ int unit_reset_cpu_accounting(Unit *u) { return 0; } +void unit_reset_memory_accounting_last(Unit *u) { + assert(u); + + FOREACH_ARRAY(i, u->memory_accounting_last, ELEMENTSOF(u->memory_accounting_last)) + *i = UINT64_MAX; +} + int unit_reset_ip_accounting(Unit *u) { int r = 0; @@ -4389,13 +4396,19 @@ int unit_reset_ip_accounting(Unit *u) { return r; } +void unit_reset_io_accounting_last(Unit *u) { + assert(u); + + FOREACH_ARRAY(i, u->io_accounting_last, _CGROUP_IO_ACCOUNTING_METRIC_MAX) + *i = UINT64_MAX; +} + int unit_reset_io_accounting(Unit *u) { int r; assert(u); - FOREACH_ARRAY(i, u->io_accounting_last, _CGROUP_IO_ACCOUNTING_METRIC_MAX) - *i = UINT64_MAX; + unit_reset_io_accounting_last(u); r = unit_get_io_accounting_raw(u, u->io_accounting_base); if (r < 0) { @@ -4414,6 +4427,7 @@ int unit_reset_accounting(Unit *u) { RET_GATHER(r, unit_reset_cpu_accounting(u)); RET_GATHER(r, unit_reset_io_accounting(u)); RET_GATHER(r, unit_reset_ip_accounting(u)); + unit_reset_memory_accounting_last(u); return r; } diff --git a/src/core/cgroup.h b/src/core/cgroup.h index 157ac7271f6..f1b674b4b74 100644 --- a/src/core/cgroup.h +++ b/src/core/cgroup.h @@ -376,7 +376,9 @@ int unit_get_io_accounting(Unit *u, CGroupIOAccountingMetric metric, bool allow_ int unit_get_ip_accounting(Unit *u, CGroupIPAccountingMetric metric, uint64_t *ret); int unit_reset_cpu_accounting(Unit *u); +void unit_reset_memory_accounting_last(Unit *u); int unit_reset_ip_accounting(Unit *u); +void unit_reset_io_accounting_last(Unit *u); int unit_reset_io_accounting(Unit *u); int unit_reset_accounting(Unit *u); diff --git a/src/core/unit.c b/src/core/unit.c index b88e28d77ed..b37b1710f26 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -115,8 +115,9 @@ Unit* unit_new(Manager *m, size_t size) { u->ref_gid = GID_INVALID; u->cpu_usage_last = NSEC_INFINITY; - FOREACH_ARRAY(i, u->memory_accounting_last, ELEMENTSOF(u->memory_accounting_last)) - *i = UINT64_MAX; + unit_reset_memory_accounting_last(u); + + unit_reset_io_accounting_last(u); u->cgroup_invalidated_mask |= CGROUP_MASK_BPF_FIREWALL; u->failure_action_exit_status = u->success_action_exit_status = -1; @@ -124,9 +125,6 @@ Unit* unit_new(Manager *m, size_t size) { u->ip_accounting_ingress_map_fd = -EBADF; u->ip_accounting_egress_map_fd = -EBADF; - FOREACH_ARRAY(i, u->io_accounting_last, _CGROUP_IO_ACCOUNTING_METRIC_MAX) - *i = UINT64_MAX; - u->ipv4_allow_map_fd = -EBADF; u->ipv6_allow_map_fd = -EBADF; u->ipv4_deny_map_fd = -EBADF;