ebea3f9a92
5003-cgroup-rename-TasksMax-structure-to-CGroupTasksMax.patch 5004-bus-print-properties-ignore-CGROUP_LIMIT_MAX-for-Mem.patch 5005-bus-print-properties-prettify-more-unset-properties.patch 5006-cgroup-Add-EffectiveMemoryMax-EffectiveMemoryHigh-an.patch 5007-test-Convert-rlimit-test-to-subtest-of-generic-limit.patch 5008-test-Add-effective-cgroup-limits-testing.patch 5009-cgroup-Restrict-effective-limits-with-global-resourc.patch 5010-cgroup-Rename-effective-limits-internal-table.patch They are temporarily put in quarantine to get broader testing but should be eventually moved to the git repo. OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=1485
284 lines
12 KiB
Diff
284 lines
12 KiB
Diff
From 14146f22cdcb6ecbf7d0f46a34843837a21aa118 Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Tue, 23 Jan 2024 11:30:14 +0100
|
|
Subject: [PATCH 5003/5011] cgroup: rename TasksMax structure to CGroupTasksMax
|
|
|
|
Almost all our enums/structs/funcs carry the CGroup prefix if they are
|
|
defined in cgroup.h, TasksMax so far does not, even though it is
|
|
exclusively used in cgroup context.
|
|
|
|
Change that.
|
|
|
|
(cherry picked from commit 94f0b13b1623c083ece9c0381bd1e65500dc1363)
|
|
|
|
[mkoutny: Adjust for missing struct UnitDefaults + contexts]
|
|
---
|
|
src/core/cgroup.c | 16 ++++++++--------
|
|
src/core/cgroup.h | 12 ++++++------
|
|
src/core/dbus-cgroup.c | 10 +++++-----
|
|
src/core/load-fragment.c | 10 +++++-----
|
|
src/core/main.c | 4 ++--
|
|
src/core/manager.c | 2 +-
|
|
src/core/manager.h | 2 +-
|
|
src/test/test-cgroup-mask.c | 2 +-
|
|
8 files changed, 29 insertions(+), 29 deletions(-)
|
|
|
|
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
|
|
index 8a3059b042..5b7205a92e 100644
|
|
--- a/src/core/cgroup.c
|
|
+++ b/src/core/cgroup.c
|
|
@@ -51,7 +51,7 @@
|
|
* out specific attributes from us. */
|
|
#define LOG_LEVEL_CGROUP_WRITE(r) (IN_SET(abs(r), ENOENT, EROFS, EACCES, EPERM) ? LOG_DEBUG : LOG_WARNING)
|
|
|
|
-uint64_t tasks_max_resolve(const TasksMax *tasks_max) {
|
|
+uint64_t cgroup_tasks_max_resolve(const CGroupTasksMax *tasks_max) {
|
|
if (tasks_max->scale == 0)
|
|
return tasks_max->value;
|
|
|
|
@@ -170,7 +170,7 @@ void cgroup_context_init(CGroupContext *c) {
|
|
.blockio_weight = CGROUP_BLKIO_WEIGHT_INVALID,
|
|
.startup_blockio_weight = CGROUP_BLKIO_WEIGHT_INVALID,
|
|
|
|
- .tasks_max = TASKS_MAX_UNSET,
|
|
+ .tasks_max = CGROUP_TASKS_MAX_UNSET,
|
|
|
|
.moom_swap = MANAGED_OOM_AUTO,
|
|
.moom_mem_pressure = MANAGED_OOM_AUTO,
|
|
@@ -562,7 +562,7 @@ void cgroup_context_dump(Unit *u, FILE* f, const char *prefix) {
|
|
prefix, c->memory_zswap_max, format_cgroup_memory_limit_comparison(cdj, sizeof(cdj), u, "MemoryZSwapMax"),
|
|
prefix, c->startup_memory_zswap_max, format_cgroup_memory_limit_comparison(cdk, sizeof(cdk), u, "StartupMemoryZSwapMax"),
|
|
prefix, c->memory_limit,
|
|
- prefix, tasks_max_resolve(&c->tasks_max),
|
|
+ prefix, cgroup_tasks_max_resolve(&c->tasks_max),
|
|
prefix, cgroup_device_policy_to_string(c->device_policy),
|
|
prefix, strempty(disable_controllers_str),
|
|
prefix, delegate_str,
|
|
@@ -1760,9 +1760,9 @@ static void cgroup_context_apply(
|
|
* which is desirable so that there's an official way to release control of the sysctl from
|
|
* systemd: set the limit to unbounded and reload. */
|
|
|
|
- if (tasks_max_isset(&c->tasks_max)) {
|
|
+ if (cgroup_tasks_max_isset(&c->tasks_max)) {
|
|
u->manager->sysctl_pid_max_changed = true;
|
|
- r = procfs_tasks_set_limit(tasks_max_resolve(&c->tasks_max));
|
|
+ r = procfs_tasks_set_limit(cgroup_tasks_max_resolve(&c->tasks_max));
|
|
} else if (u->manager->sysctl_pid_max_changed)
|
|
r = procfs_tasks_set_limit(TASKS_MAX);
|
|
else
|
|
@@ -1775,10 +1775,10 @@ static void cgroup_context_apply(
|
|
/* The attribute itself is not available on the host root cgroup, and in the container case we want to
|
|
* leave it for the container manager. */
|
|
if (!is_local_root) {
|
|
- if (tasks_max_isset(&c->tasks_max)) {
|
|
+ if (cgroup_tasks_max_isset(&c->tasks_max)) {
|
|
char buf[DECIMAL_STR_MAX(uint64_t) + 1];
|
|
|
|
- xsprintf(buf, "%" PRIu64 "\n", tasks_max_resolve(&c->tasks_max));
|
|
+ xsprintf(buf, "%" PRIu64 "\n", cgroup_tasks_max_resolve(&c->tasks_max));
|
|
(void) set_attribute_and_warn(u, "pids", "pids.max", buf);
|
|
} else
|
|
(void) set_attribute_and_warn(u, "pids", "pids.max", "max\n");
|
|
@@ -1894,7 +1894,7 @@ static CGroupMask unit_get_cgroup_mask(Unit *u) {
|
|
mask |= CGROUP_MASK_DEVICES | CGROUP_MASK_BPF_DEVICES;
|
|
|
|
if (c->tasks_accounting ||
|
|
- tasks_max_isset(&c->tasks_max))
|
|
+ cgroup_tasks_max_isset(&c->tasks_max))
|
|
mask |= CGROUP_MASK_PIDS;
|
|
|
|
return CGROUP_MASK_EXTEND_JOINED(mask);
|
|
diff --git a/src/core/cgroup.h b/src/core/cgroup.h
|
|
index 9f1963b3f2..486957b545 100644
|
|
--- a/src/core/cgroup.h
|
|
+++ b/src/core/cgroup.h
|
|
@@ -9,20 +9,20 @@
|
|
#include "list.h"
|
|
#include "time-util.h"
|
|
|
|
-typedef struct TasksMax {
|
|
+typedef struct CGroupTasksMax {
|
|
/* If scale == 0, just use value; otherwise, value / scale.
|
|
* See tasks_max_resolve(). */
|
|
uint64_t value;
|
|
uint64_t scale;
|
|
-} TasksMax;
|
|
+} CGroupTasksMax;
|
|
|
|
-#define TASKS_MAX_UNSET ((TasksMax) { .value = UINT64_MAX, .scale = 0 })
|
|
+#define CGROUP_TASKS_MAX_UNSET ((CGroupTasksMax) { .value = UINT64_MAX, .scale = 0 })
|
|
|
|
-static inline bool tasks_max_isset(const TasksMax *tasks_max) {
|
|
+static inline bool cgroup_tasks_max_isset(const CGroupTasksMax *tasks_max) {
|
|
return tasks_max->value != UINT64_MAX || tasks_max->scale != 0;
|
|
}
|
|
|
|
-uint64_t tasks_max_resolve(const TasksMax *tasks_max);
|
|
+uint64_t cgroup_tasks_max_resolve(const CGroupTasksMax *tasks_max);
|
|
|
|
typedef struct CGroupContext CGroupContext;
|
|
typedef struct CGroupDeviceAllow CGroupDeviceAllow;
|
|
@@ -210,7 +210,7 @@ struct CGroupContext {
|
|
LIST_HEAD(CGroupSocketBindItem, socket_bind_deny);
|
|
|
|
/* Common */
|
|
- TasksMax tasks_max;
|
|
+ CGroupTasksMax tasks_max;
|
|
|
|
/* Settings for systemd-oomd */
|
|
ManagedOOMMode moom_swap;
|
|
diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
|
|
index 5347525844..3c35673779 100644
|
|
--- a/src/core/dbus-cgroup.c
|
|
+++ b/src/core/dbus-cgroup.c
|
|
@@ -25,7 +25,7 @@
|
|
#include "percent-util.h"
|
|
#include "socket-util.h"
|
|
|
|
-BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", TasksMax, tasks_max_resolve);
|
|
+BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", CGroupTasksMax, cgroup_tasks_max_resolve);
|
|
BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_cgroup_pressure_watch, cgroup_pressure_watch, CGroupPressureWatch);
|
|
|
|
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_cgroup_device_policy, cgroup_device_policy, CGroupDevicePolicy);
|
|
@@ -994,7 +994,7 @@ static int bus_cgroup_set_cpu_weight(
|
|
static int bus_cgroup_set_tasks_max(
|
|
Unit *u,
|
|
const char *name,
|
|
- TasksMax *p,
|
|
+ CGroupTasksMax *p,
|
|
sd_bus_message *message,
|
|
UnitWriteFlags flags,
|
|
sd_bus_error *error) {
|
|
@@ -1013,7 +1013,7 @@ static int bus_cgroup_set_tasks_max(
|
|
"Value specified in %s is out of range", name);
|
|
|
|
if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
|
|
- *p = (TasksMax) { .value = v, .scale = 0 }; /* When .scale==0, .value is the absolute value */
|
|
+ *p = (CGroupTasksMax) { .value = v, .scale = 0 }; /* When .scale==0, .value is the absolute value */
|
|
unit_invalidate_cgroup(u, CGROUP_MASK_PIDS);
|
|
|
|
if (v == CGROUP_LIMIT_MAX)
|
|
@@ -1030,7 +1030,7 @@ static int bus_cgroup_set_tasks_max(
|
|
static int bus_cgroup_set_tasks_max_scale(
|
|
Unit *u,
|
|
const char *name,
|
|
- TasksMax *p,
|
|
+ CGroupTasksMax *p,
|
|
sd_bus_message *message,
|
|
UnitWriteFlags flags,
|
|
sd_bus_error *error) {
|
|
@@ -1049,7 +1049,7 @@ static int bus_cgroup_set_tasks_max_scale(
|
|
"Value specified in %s is out of range", name);
|
|
|
|
if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
|
|
- *p = (TasksMax) { v, UINT32_MAX }; /* .scale is not 0, so this is interpreted as v/UINT32_MAX. */
|
|
+ *p = (CGroupTasksMax) { v, UINT32_MAX }; /* .scale is not 0, so this is interpreted as v/UINT32_MAX. */
|
|
unit_invalidate_cgroup(u, CGROUP_MASK_PIDS);
|
|
|
|
uint32_t scaled = DIV_ROUND_UP((uint64_t) v * 100U, (uint64_t) UINT32_MAX);
|
|
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
|
|
index 86235fa5b6..18ba95a6c5 100644
|
|
--- a/src/core/load-fragment.c
|
|
+++ b/src/core/load-fragment.c
|
|
@@ -3934,23 +3934,23 @@ int config_parse_tasks_max(
|
|
void *userdata) {
|
|
|
|
const Unit *u = userdata;
|
|
- TasksMax *tasks_max = data;
|
|
+ CGroupTasksMax *tasks_max = data;
|
|
uint64_t v;
|
|
int r;
|
|
|
|
if (isempty(rvalue)) {
|
|
- *tasks_max = u ? u->manager->default_tasks_max : TASKS_MAX_UNSET;
|
|
+ *tasks_max = u ? u->manager->default_tasks_max : CGROUP_TASKS_MAX_UNSET;
|
|
return 0;
|
|
}
|
|
|
|
if (streq(rvalue, "infinity")) {
|
|
- *tasks_max = TASKS_MAX_UNSET;
|
|
+ *tasks_max = CGROUP_TASKS_MAX_UNSET;
|
|
return 0;
|
|
}
|
|
|
|
r = parse_permyriad(rvalue);
|
|
if (r >= 0)
|
|
- *tasks_max = (TasksMax) { r, 10000U }; /* r‱ */
|
|
+ *tasks_max = (CGroupTasksMax) { r, 10000U }; /* r‱ */
|
|
else {
|
|
r = safe_atou64(rvalue, &v);
|
|
if (r < 0) {
|
|
@@ -3963,7 +3963,7 @@ int config_parse_tasks_max(
|
|
return 0;
|
|
}
|
|
|
|
- *tasks_max = (TasksMax) { v };
|
|
+ *tasks_max = (CGroupTasksMax) { v };
|
|
}
|
|
|
|
return 0;
|
|
diff --git a/src/core/main.c b/src/core/main.c
|
|
index 14aa1f00c0..efe75d96b3 100644
|
|
--- a/src/core/main.c
|
|
+++ b/src/core/main.c
|
|
@@ -106,7 +106,7 @@
|
|
#include <sanitizer/lsan_interface.h>
|
|
#endif
|
|
|
|
-#define DEFAULT_TASKS_MAX ((TasksMax) { 15U, 100U }) /* 15% */
|
|
+#define DEFAULT_TASKS_MAX ((CGroupTasksMax) { 15U, 100U }) /* 15% */
|
|
|
|
static enum {
|
|
ACTION_RUN,
|
|
@@ -166,7 +166,7 @@ static bool arg_default_ip_accounting;
|
|
static bool arg_default_blockio_accounting;
|
|
static bool arg_default_memory_accounting;
|
|
static bool arg_default_tasks_accounting;
|
|
-static TasksMax arg_default_tasks_max;
|
|
+static CGroupTasksMax arg_default_tasks_max;
|
|
static usec_t arg_default_memory_pressure_threshold_usec;
|
|
static CGroupPressureWatch arg_default_memory_pressure_watch;
|
|
static sd_id128_t arg_machine_id;
|
|
diff --git a/src/core/manager.c b/src/core/manager.c
|
|
index 2ccb753888..5f4522392d 100644
|
|
--- a/src/core/manager.c
|
|
+++ b/src/core/manager.c
|
|
@@ -840,7 +840,7 @@ int manager_new(RuntimeScope runtime_scope, ManagerTestRunFlags test_run_flags,
|
|
.default_timer_accuracy_usec = USEC_PER_MINUTE,
|
|
.default_memory_accounting = MEMORY_ACCOUNTING_DEFAULT,
|
|
.default_tasks_accounting = true,
|
|
- .default_tasks_max = TASKS_MAX_UNSET,
|
|
+ .default_tasks_max = CGROUP_TASKS_MAX_UNSET,
|
|
.default_timeout_start_usec = manager_default_timeout(runtime_scope),
|
|
.default_timeout_stop_usec = manager_default_timeout(runtime_scope),
|
|
.default_restart_usec = DEFAULT_RESTART_USEC,
|
|
diff --git a/src/core/manager.h b/src/core/manager.h
|
|
index a6c87dc852..e4b2393d06 100644
|
|
--- a/src/core/manager.h
|
|
+++ b/src/core/manager.h
|
|
@@ -375,7 +375,7 @@ struct Manager {
|
|
bool default_tasks_accounting;
|
|
bool default_ip_accounting;
|
|
|
|
- TasksMax default_tasks_max;
|
|
+ CGroupTasksMax default_tasks_max;
|
|
usec_t default_timer_accuracy_usec;
|
|
|
|
OOMPolicy default_oom_policy;
|
|
diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c
|
|
index c0bf585963..35b2599e86 100644
|
|
--- a/src/test/test-cgroup-mask.c
|
|
+++ b/src/test/test-cgroup-mask.c
|
|
@@ -58,7 +58,7 @@ TEST_RET(cgroup_mask, .sd_booted = true) {
|
|
m->default_blockio_accounting =
|
|
m->default_io_accounting =
|
|
m->default_tasks_accounting = false;
|
|
- m->default_tasks_max = TASKS_MAX_UNSET;
|
|
+ m->default_tasks_max = CGROUP_TASKS_MAX_UNSET;
|
|
|
|
assert_se(manager_startup(m, NULL, NULL, NULL) >= 0);
|
|
|
|
--
|
|
2.35.3
|
|
|