summaryrefslogtreecommitdiff
path: root/bugfix-for-cgroup-Swap-cgroup-v1-deletion-and-migration.patch
diff options
context:
space:
mode:
Diffstat (limited to 'bugfix-for-cgroup-Swap-cgroup-v1-deletion-and-migration.patch')
-rw-r--r--bugfix-for-cgroup-Swap-cgroup-v1-deletion-and-migration.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/bugfix-for-cgroup-Swap-cgroup-v1-deletion-and-migration.patch b/bugfix-for-cgroup-Swap-cgroup-v1-deletion-and-migration.patch
new file mode 100644
index 0000000..2f1b02c
--- /dev/null
+++ b/bugfix-for-cgroup-Swap-cgroup-v1-deletion-and-migration.patch
@@ -0,0 +1,40 @@
+From c003873099e47dccf2e57816291bd6b7de4a5790 Mon Sep 17 00:00:00 2001
+From: jiangchuangang <jiangchuangang@huawei.com>
+Date: Wed, 13 Jul 2022 21:39:06 +0800
+Subject: [PATCH] bugfix for cpuset and Delegate
+
+---
+ src/core/cgroup.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/cgroup.c b/src/core/cgroup.c
+index 0e4c94d..e887d49 100644
+--- a/src/core/cgroup.c
++++ b/src/core/cgroup.c
+@@ -1963,6 +1963,8 @@ static int unit_update_cgroup(
+ u->cgroup_enabled_mask = result_mask;
+
+ migrate_mask = u->cgroup_realized_mask ^ target_mask;
++ if (u->type != UNIT_SLICE && FLAGS_SET(target_mask, CGROUP_MASK_CPUSET) && cg_all_unified() == 0)
++ migrate_mask |= CGROUP_MASK_CPUSET;
+ }
+
+ /* Keep track that this is now realized */
+@@ -1977,9 +1979,11 @@ static int unit_update_cgroup(
+ * delegated units.
+ */
+ if (cg_all_unified() == 0) {
+- r = cg_migrate_v1_controllers(u->manager->cgroup_supported, migrate_mask, u->cgroup_path, migrate_callback, u);
+- if (r < 0)
+- log_unit_warning_errno(u, r, "Failed to migrate controller cgroups from %s, ignoring: %m", empty_to_root(u->cgroup_path));
++ if (!unit_cgroup_delegate(u)) {
++ r = cg_migrate_v1_controllers(u->manager->cgroup_supported, migrate_mask, u->cgroup_path, migrate_callback, u);
++ if (r < 0)
++ log_unit_warning_errno(u, r, "Failed to migrate controller cgroups from %s, ignoring: %m", empty_to_root(u->cgroup_path));
++ }
+
+ is_root_slice = unit_has_name(u, SPECIAL_ROOT_SLICE);
+ r = cg_trim_v1_controllers(u->manager->cgroup_supported, ~target_mask, u->cgroup_path, !is_root_slice);
+--
+2.33.0
+