Skip to content

Commit

Permalink
Merge pull request #1610 from sboeuf/fix_freezer_state
Browse files Browse the repository at this point in the history
libcontainer: cgroups: Write freezer state after every state check
  • Loading branch information
Mrunal Patel committed Oct 12, 2017
2 parents beb8716 + acb93c9 commit 7c7d38b
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions libcontainer/cgroups/fs/freezer.go
Expand Up @@ -29,18 +29,23 @@ func (s *FreezerGroup) Apply(d *cgroupData) error {
func (s *FreezerGroup) Set(path string, cgroup *configs.Cgroup) error {
switch cgroup.Resources.Freezer {
case configs.Frozen, configs.Thawed:
if err := writeFile(path, "freezer.state", string(cgroup.Resources.Freezer)); err != nil {
return err
}

for {
// In case this loop does not exit because it doesn't get the expected
// state, let's write again this state, hoping it's going to be properly
// set this time. Otherwise, this loop could run infinitely, waiting for
// a state change that would never happen.
if err := writeFile(path, "freezer.state", string(cgroup.Resources.Freezer)); err != nil {
return err
}

state, err := readFile(path, "freezer.state")
if err != nil {
return err
}
if strings.TrimSpace(state) == string(cgroup.Resources.Freezer) {
break
}

time.Sleep(1 * time.Millisecond)
}
case configs.Undefined:
Expand Down

0 comments on commit 7c7d38b

Please sign in to comment.