fix(host): init from existing guest load cpuset

This commit is contained in:
wanyaoqi
2024-04-15 18:54:44 +08:00
parent f7dc234099
commit 0ebd7370d1
+23
View File
@@ -412,6 +412,25 @@ func (s *SKVMGuestInstance) initLiveDescFromSourceGuest(srcDesc *desc.SGuestDesc
srcDesc.VcpuPin = nil
srcDesc.CpuNumaPin = nil
} else {
if scpuset, ok := srcDesc.Metadata[api.VM_METADATA_CGROUP_CPUSET]; ok {
s.manager.cpuSet.Lock.Lock()
s.manager.cpuSet.ReleaseCpus(cpus, int(srcDesc.Cpu))
s.manager.cpuSet.Lock.Unlock()
cpusetJson, err := jsonutils.ParseString(scpuset)
if err != nil {
log.Errorf("failed parse server %s cpuset %s: %s", s.Id, scpuset, err)
return errors.Errorf("failed parse server %s cpuset %s: %s", s.Id, scpuset, err)
}
input := new(api.ServerCPUSetInput)
err = cpusetJson.Unmarshal(input)
if err != nil {
log.Errorf("failed unmarshal server %s cpuset %s", s.Id, err)
return errors.Errorf("failed unmarshal server %s cpuset %s", s.Id, err)
}
cpus = input.CPUS
}
srcDesc.VcpuPin = []desc.SCpuPin{
{
Vcpus: fmt.Sprintf("0-%d", srcDesc.Cpu-1),
@@ -2855,6 +2874,10 @@ func (s *SKVMGuestInstance) allocGuestNumaCpuset() error {
s.Desc.CpuNumaPin = cpuNumaPin
} else if !s.manager.numaAllocate {
if scpuset, ok := s.Desc.Metadata[api.VM_METADATA_CGROUP_CPUSET]; ok {
s.manager.cpuSet.Lock.Lock()
s.manager.cpuSet.ReleaseCpus(cpus, int(s.Desc.Cpu))
s.manager.cpuSet.Lock.Unlock()
cpusetJson, err := jsonutils.ParseString(scpuset)
if err != nil {
log.Errorf("failed parse server %s cpuset %s: %s", s.Id, scpuset, err)