From 14b69596b0bff64f7482d93ea3f043520a716921 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Thu, 8 Jun 2023 20:02:50 +0800
Subject: [PATCH] set the cpuset.cpus/mems of machine.slice to all by default
 This is necessary after merging core-cgroup-support-cpuset.patch.

When creating a vm, libvirt will issue a dbus method_call to
systemd-machined. systemd-machined will start transient unit
usually named xxx.scope with Delegate=1 set after receiving
the method_call. If Delegate=1 is set, systemd will create
machine.slice in /sys/fs/cgroup for every cgroup subsystem, this
includes cpuset. cpuset is different, you can't migrate processes
to the created directory unless you have set proper cpuset.cpus
and cpuset.mems.

Without this patch, libvirt sees machine.slice, it won't check
if cpuset.cpus or cpuset.mems is valid, and just migrate the vm
process to machine.slice. This action will fail because core-cgroup
-support-cpuset.patch only supports create the machine.slice
directory when Delegate=1 is set, but won't set cpuset.cpus
and cpuset.mems automatically.

Now we have this patch, it will make systemd automatically set
cpuset.cpus and cpuset.mems according to /sys/fs/cgroup/cpuset/{
cpuset.cpus, cpuset.mems}. Then libvirt can migrate vm processes
freely.
---
 units/machine.slice | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/units/machine.slice b/units/machine.slice
index 501d353..8d87851 100644
--- a/units/machine.slice
+++ b/units/machine.slice
@@ -11,3 +11,8 @@
 Description=Virtual Machine and Container Slice
 Documentation=man:systemd.special(7)
 Before=slices.target
+
+[Slice]
+CPUSetCpus=all
+CPUSetMems=all
+CPUSetCloneChildren=1
-- 
2.33.0

