Skip to content

Commit

Permalink
Merge pull request #3102 from stripe:andrew/cgroup-eintr
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 323638518
  • Loading branch information
gvisor-bot committed Jul 28, 2020
2 parents 5873b0f + 079123b commit 8518800
Showing 1 changed file with 21 additions and 3 deletions.
24 changes: 21 additions & 3 deletions runsc/cgroup/cgroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,17 @@ func setOptionalValueUint16(path, name string, val *uint16) error {

func setValue(path, name, data string) error {
fullpath := filepath.Join(path, name)
return ioutil.WriteFile(fullpath, []byte(data), 0700)

// Retry writes on EINTR; see:
// https://github.com/golang/go/issues/38033
for {
err := ioutil.WriteFile(fullpath, []byte(data), 0700)
if err == nil {
return nil
} else if !errors.Is(err, syscall.EINTR) {
return err
}
}
}

func getValue(path, name string) (string, error) {
Expand Down Expand Up @@ -132,8 +142,16 @@ func fillFromAncestor(path string) (string, error) {
if err != nil {
return "", err
}
if err := ioutil.WriteFile(path, []byte(val), 0700); err != nil {
return "", err

// Retry writes on EINTR; see:
// https://github.com/golang/go/issues/38033
for {
err := ioutil.WriteFile(path, []byte(val), 0700)
if err == nil {
break
} else if !errors.Is(err, syscall.EINTR) {
return "", err
}
}
return val, nil
}
Expand Down

0 comments on commit 8518800

Please sign in to comment.