Skip to content

Commit

Permalink
cgroups: only return path when subsystem really mounted
Browse files Browse the repository at this point in the history
If cgroup patch doesn't exist, there is no point we do the Set.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
  • Loading branch information
hqhq committed Mar 9, 2015
1 parent 83663f8 commit 606d906
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 10 deletions.
6 changes: 6 additions & 0 deletions cgroups/fs/apply_raw.go
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,12 @@ func (raw *data) parent(subsystem string) (string, error) {
}

func (raw *data) path(subsystem string) (string, error) {
_, err := cgroups.FindCgroupMountpoint(subsystem)
// If we didn't mount the subsystem, there is no point we make the path.
if err != nil {
return "", err
}

// If the cgroup name/path is absolute do not look relative to the cgroup of the init process.
if filepath.IsAbs(raw.cgroup) {
path := filepath.Join(raw.root, subsystem, raw.cgroup)
Expand Down
8 changes: 6 additions & 2 deletions cgroups/fs/blkio.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,12 @@ type BlkioGroup struct {

func (s *BlkioGroup) Apply(d *data) error {
dir, err := d.join("blkio")
if err != nil && !cgroups.IsNotFound(err) {
return err
if err != nil {
if cgroups.IsNotFound(err) {
return nil
} else {
return err
}
}

if err := s.Set(dir, d.c); err != nil {
Expand Down
6 changes: 5 additions & 1 deletion cgroups/fs/cpu.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ func (s *CpuGroup) Apply(d *data) error {
// on a container basis
dir, err := d.join("cpu")
if err != nil {
return err
if cgroups.IsNotFound(err) {
return nil
} else {
return err
}
}

if err := s.Set(dir, d.c); err != nil {
Expand Down
6 changes: 5 additions & 1 deletion cgroups/fs/cpuset.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@ type CpusetGroup struct {
func (s *CpusetGroup) Apply(d *data) error {
dir, err := d.path("cpuset")
if err != nil {
return err
if cgroups.IsNotFound(err) {
return nil
} else {
return err
}
}
return s.ApplyDir(dir, d.c, d.pid)
}
Expand Down
6 changes: 5 additions & 1 deletion cgroups/fs/devices.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ type DevicesGroup struct {
func (s *DevicesGroup) Apply(d *data) error {
dir, err := d.join("devices")
if err != nil {
return err
if cgroups.IsNotFound(err) {
return nil
} else {
return err
}
}

if err := s.Set(dir, d.c); err != nil {
Expand Down
8 changes: 6 additions & 2 deletions cgroups/fs/freezer.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@ type FreezerGroup struct {

func (s *FreezerGroup) Apply(d *data) error {
dir, err := d.join("freezer")
if err != nil && !cgroups.IsNotFound(err) {
return err
if err != nil {
if cgroups.IsNotFound(err) {
return nil
} else {
return err
}
}

if err := s.Set(dir, d.c); err != nil {
Expand Down
9 changes: 6 additions & 3 deletions cgroups/fs/memory.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@ type MemoryGroup struct {

func (s *MemoryGroup) Apply(d *data) error {
dir, err := d.join("memory")
// only return an error for memory if it was specified
if err != nil && (d.c.Memory != 0 || d.c.MemoryReservation != 0 || d.c.MemorySwap != 0) {
return err
if err != nil {
if cgroups.IsNotFound(err) {
return nil
} else {
return err
}
}
defer func() {
if err != nil {
Expand Down

0 comments on commit 606d906

Please sign in to comment.