Projects
Mega:23.03
systemd
_service:tar_scm:backport-scope-count-successfu...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-scope-count-successful-cgroup-additions-when-delegat.patch of Package systemd
From be509064edba9863521a77a4a20a6e1a0971693e Mon Sep 17 00:00:00 2001 From: Jonas Witschel <diabonas@archlinux.org> Date: Wed, 10 Nov 2021 22:46:35 +0100 Subject: [PATCH] scope: count successful cgroup additions when delegating via D-Bus Since commit 8d3e4ac7cd37200d1431411a4b98925a24b7d9b3 ("scope: refuse activation of scopes if no PIDs to add are left") all "systemd-run --scope --user" calls fail because cgroup attachments delegated to the system instance are not counted towards successful additions. Fix this by incrementing the return value in case unit_attach_pid_to_cgroup_via_bus() succeeds, similar to what happens when cg_attach() succeeds directly. Note that this can *not* distinguish the case when unit_attach_pid_to_cgroup_via_bus() has been run successfully, but all processes to attach are gone in the meantime, unlike the checks that commit 8d3e4ac7cd37200d1431411a4b98925a24b7d9b3 adds for the system instance. This is because even though unit_attach_pid_to_cgroup_via_bus() leads to an internal unit_attach_pids_to_cgroup() call, the return value over D-Bus does not include the number of successfully attached processes and is always NULL on success. Fixes: #21297 (cherry picked from commit c65417a01121301fdf7f8514ee7663d287af3a72) Conflict:NA Reference:https://github.com/systemd/systemd/commit/be509064edba9863521a77a4a20a6e1a0971693e --- src/core/cgroup.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 51936b7d1d..79e10ca3c0 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -2188,8 +2188,11 @@ int unit_attach_pids_to_cgroup(Unit *u, Set *pids, const char *suffix_path) { z = unit_attach_pid_to_cgroup_via_bus(u, pid, suffix_path); if (z < 0) log_unit_info_errno(u, z, "Couldn't move process "PID_FMT" to requested cgroup '%s' (directly or via the system bus): %m", pid, empty_to_root(p)); - else + else { + if (ret >= 0) + ret++; /* Count successful additions */ continue; /* When the bus thing worked via the bus we are fully done for this PID. */ + } } if (ret >= 0) -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2