]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: add unit_reset_{memory,io}_accounting_last 30007/head
authorMike Yuan <me@yhndnzj.com>
Mon, 13 Nov 2023 13:27:29 +0000 (21:27 +0800)
committerMike Yuan <me@yhndnzj.com>
Mon, 13 Nov 2023 16:22:54 +0000 (00:22 +0800)
src/core/cgroup.c
src/core/cgroup.h
src/core/unit.c

index 4e4b668f62c8feaa2bc9bad9b549c801a7f6226e..5b0cb15c85c69779d06f5a117a577b34f9326590 100644 (file)
@@ -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;
 }
index 157ac7271f66f3fbe2a148a29ea296448d249011..f1b674b4b74710b3af4b7fb408afd6dcde3afc63 100644 (file)
@@ -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);
 
index b88e28d77edb4a0d0c9ed3ee9f8151150b20d6e5..b37b1710f26c75fd5fba7383ecc1e19188da0bb2 100644 (file)
@@ -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;