126 lines
5.7 KiB
Diff
126 lines
5.7 KiB
Diff
From 84ec6a0043f7a447157753fb12e991ebce6e14b7 Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Wed, 27 Oct 2021 23:08:58 +0200
|
|
Subject: [PATCH] core: normalize 'r' variable handling in
|
|
unit_attach_pids_to_cgroup() a bit
|
|
|
|
The 'r' variable is our "go-to" variable for error return codes, all
|
|
across our codebase. In unit_attach_pids_to_cgroup() it was so far used
|
|
in a strange way for most of the function: instead of directly storing
|
|
the error codes of functions we call we'd store it in a local variable
|
|
'q' instead, and propagate it to 'r' only in some cases finally we'd
|
|
return the ultimate result of 'r'.
|
|
|
|
Let's normalize this a bit: let's always store error return values in
|
|
'r', and then use 'ret' as the variable to sometimes propagate errors
|
|
to, and then return that.
|
|
|
|
This also allows us to get rid of one local variable.
|
|
|
|
No actual codeflow changes, just some renaming of variables that allows
|
|
us to remove one.
|
|
|
|
(cherry picked from commit db4229d12f48663400802171b336c7cadbbe04ef)
|
|
|
|
Conflict:NA
|
|
Reference:https://github.com/systemd/systemd/commit/84ec6a0043f7a447157753fb12e991ebce6e14b7
|
|
---
|
|
src/core/cgroup.c | 38 +++++++++++++++++++-------------------
|
|
1 file changed, 19 insertions(+), 19 deletions(-)
|
|
|
|
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
|
|
index 5c07aa71d1..1551d57e90 100644
|
|
--- a/src/core/cgroup.c
|
|
+++ b/src/core/cgroup.c
|
|
@@ -2137,7 +2137,7 @@ int unit_attach_pids_to_cgroup(Unit *u, Set *pids, const char *suffix_path) {
|
|
CGroupMask delegated_mask;
|
|
const char *p;
|
|
void *pidp;
|
|
- int r, q;
|
|
+ int ret, r;
|
|
|
|
assert(u);
|
|
|
|
@@ -2164,16 +2164,16 @@ int unit_attach_pids_to_cgroup(Unit *u, Set *pids, const char *suffix_path) {
|
|
|
|
delegated_mask = unit_get_delegate_mask(u);
|
|
|
|
- r = 0;
|
|
+ ret = 0;
|
|
SET_FOREACH(pidp, pids) {
|
|
pid_t pid = PTR_TO_PID(pidp);
|
|
|
|
/* First, attach the PID to the main cgroup hierarchy */
|
|
- q = cg_attach(SYSTEMD_CGROUP_CONTROLLER, p, pid);
|
|
- if (q < 0) {
|
|
- bool again = MANAGER_IS_USER(u->manager) && ERRNO_IS_PRIVILEGE(q);
|
|
+ r = cg_attach(SYSTEMD_CGROUP_CONTROLLER, p, pid);
|
|
+ if (r < 0) {
|
|
+ bool again = MANAGER_IS_USER(u->manager) && ERRNO_IS_PRIVILEGE(r);
|
|
|
|
- log_unit_full_errno(u, again ? LOG_DEBUG : LOG_INFO, q,
|
|
+ log_unit_full_errno(u, again ? LOG_DEBUG : LOG_INFO, r,
|
|
"Couldn't move process "PID_FMT" to%s requested cgroup '%s': %m",
|
|
pid, again ? " directly" : "", empty_to_root(p));
|
|
|
|
@@ -2192,16 +2192,16 @@ int unit_attach_pids_to_cgroup(Unit *u, Set *pids, const char *suffix_path) {
|
|
continue; /* When the bus thing worked via the bus we are fully done for this PID. */
|
|
}
|
|
|
|
- if (r >= 0)
|
|
- r = q; /* Remember first error */
|
|
+ if (ret >= 0)
|
|
+ ret = r; /* Remember first error */
|
|
|
|
continue;
|
|
}
|
|
|
|
- q = cg_all_unified();
|
|
- if (q < 0)
|
|
- return q;
|
|
- if (q > 0)
|
|
+ r = cg_all_unified();
|
|
+ if (r < 0)
|
|
+ return r;
|
|
+ if (r > 0)
|
|
continue;
|
|
|
|
/* In the legacy hierarchy, attach the process to the request cgroup if possible, and if not to the
|
|
@@ -2216,11 +2216,11 @@ int unit_attach_pids_to_cgroup(Unit *u, Set *pids, const char *suffix_path) {
|
|
|
|
/* If this controller is delegated and realized, honour the caller's request for the cgroup suffix. */
|
|
if (delegated_mask & u->cgroup_realized_mask & bit) {
|
|
- q = cg_attach(cgroup_controller_to_string(c), p, pid);
|
|
- if (q >= 0)
|
|
+ r = cg_attach(cgroup_controller_to_string(c), p, pid);
|
|
+ if (r >= 0)
|
|
continue; /* Success! */
|
|
|
|
- log_unit_debug_errno(u, q, "Failed to attach PID " PID_FMT " to requested cgroup %s in controller %s, falling back to unit's cgroup: %m",
|
|
+ log_unit_debug_errno(u, r, "Failed to attach PID " PID_FMT " to requested cgroup %s in controller %s, falling back to unit's cgroup: %m",
|
|
pid, empty_to_root(p), cgroup_controller_to_string(c));
|
|
}
|
|
|
|
@@ -2231,14 +2231,14 @@ int unit_attach_pids_to_cgroup(Unit *u, Set *pids, const char *suffix_path) {
|
|
if (!realized)
|
|
continue; /* Not even realized in the root slice? Then let's not bother */
|
|
|
|
- q = cg_attach(cgroup_controller_to_string(c), realized, pid);
|
|
- if (q < 0)
|
|
- log_unit_debug_errno(u, q, "Failed to attach PID " PID_FMT " to realized cgroup %s in controller %s, ignoring: %m",
|
|
+ r = cg_attach(cgroup_controller_to_string(c), realized, pid);
|
|
+ if (r < 0)
|
|
+ log_unit_debug_errno(u, r, "Failed to attach PID " PID_FMT " to realized cgroup %s in controller %s, ignoring: %m",
|
|
pid, realized, cgroup_controller_to_string(c));
|
|
}
|
|
}
|
|
|
|
- return r;
|
|
+ return ret;
|
|
}
|
|
|
|
static bool unit_has_mask_realized(
|
|
--
|
|
2.33.0
|
|
|