Skip to content

Commit

Permalink
libct/cg/fs: don't write cpu_burst twice on ENOENT
Browse files Browse the repository at this point in the history
If CPU burst knob is non-existent, the current implementation (added in
commit e158483) still tries to set it again after setting the new CPU
quota, which is useless (and we have to ignore ENOENT again).

Fix this.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
  • Loading branch information
kolyshkin committed Apr 26, 2024
1 parent 426c04b commit b032fea
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions libcontainer/cgroups/fs/cpu.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,11 @@ func (s *CpuGroup) Set(path string, r *configs.Resources) error {
if r.CpuBurst != nil {
burst = strconv.FormatUint(*r.CpuBurst, 10)
if err := cgroups.WriteFile(path, "cpu.cfs_burst_us", burst); err != nil {
// this is a special trick for burst feature, the current systemd and low version of kernel will not support it.
// So, an `no such file or directory` error would be raised, and we can ignore it .
if !errors.Is(err, unix.ENOENT) {
if errors.Is(err, unix.ENOENT) {
// If CPU burst knob is not available (e.g.
// older kernel), ignore it.
burst = ""
} else {
// Sometimes when the burst to be set is larger
// than the current one, it is rejected by the kernel
// (EINVAL) as old_quota/new_burst exceeds the parent
Expand All @@ -117,9 +119,7 @@ func (s *CpuGroup) Set(path string, r *configs.Resources) error {
}
if burst != "" {
if err := cgroups.WriteFile(path, "cpu.cfs_burst_us", burst); err != nil {
if !errors.Is(err, unix.ENOENT) {
return err
}
return err
}
}
}
Expand Down

0 comments on commit b032fea

Please sign in to comment.