From 705182d04e3e9118167c95261fe128f78021fa6a Mon Sep 17 00:00:00 2001 From: bin liu Date: Tue, 1 Dec 2020 16:45:57 +0800 Subject: [PATCH] agent: ignore updating cpuset error when update cgroups The result of `cpuset_controller.set_cpus(&cpu.cpus)` is unwrapped, this will lead creating container to fail if cpuset is set. The sandbox's `CreateContainer` sequence is: c, err := newContainer(s, &contConfig) err = c.create() c.sandbox.agent.createContainer(c.sandbox, c) (1) err = s.updateResources() oldCPUs, newCPUs, err := s.hypervisor.resizeVCPUs(sandboxVCPUs) (2) cpuset only avaiable after `s.hypervisor.resizeVCPUs` has been called at (2), and then cpuset is written to cgourps file. Fixes: #1159 Signed-off-by: bin liu --- src/agent/rustjail/src/cgroups/fs/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/agent/rustjail/src/cgroups/fs/mod.rs b/src/agent/rustjail/src/cgroups/fs/mod.rs index 2847bb6315..38d86268fe 100644 --- a/src/agent/rustjail/src/cgroups/fs/mod.rs +++ b/src/agent/rustjail/src/cgroups/fs/mod.rs @@ -365,7 +365,9 @@ fn set_cpu_resources(cg: &cgroups::Cgroup, cpu: &LinuxCPU) -> Result<()> { let cpuset_controller: &CpuSetController = cg.controller_of().unwrap(); if !cpu.cpus.is_empty() { - cpuset_controller.set_cpus(&cpu.cpus)?; + if let Err(e) = cpuset_controller.set_cpus(&cpu.cpus) { + warn!(sl!(), "write cpuset failed: {:?}", e); + } } if !cpu.mems.is_empty() {