Skip to content

RFC CGroups: CGroups: Hierarchy locking/refcount changes

[email protected] containers lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest3 patches 37 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3CGroups: Add a per-subsystem hierarchy_mutexDocumentation/cgroups/cgroups.txt include/linux/cgroup.h kernel/cgroup.c+44 -413 replies
2/3CGroups: Use hierarchy_mutex in memory controllermm/memcontrol.c+6 -816 replies
3/3CGroups: Add css_tryget()include/linux/cgroup.h kernel/cgroup.c+80 -119 replies

Reviews trailers per patch

1 of 3 patches has a Reviewed-by or Acked-by.

PatchBalbir Singh
1/3A-b A-b
2/3
3/3

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [RFC][PATCH 0/3] CGroups: CGroups: Hierarchy locking/refcount changes

These patches present an alternative to some of the other cgroups locking/refcount patches that have been proposed on LKML recently.

Several of these patches have been to address the race opened by moving the calls to pre_destroy() callbacks outside of cgroup_mutex; rather than continuing to patch up the holes caused by that change, these patches introduce new locking/refcount rules to ultimately allow the previous atomicity of cgroup_rmdir() to be restored.

These three patches give:

1/3 - introduce a per-subsystem hierarchy_mutex which a subsystem can
use to prevent changes to its own cgroup tree

2/3 - use hierarchy_mutex in place of calling cgroup_lock() in the
memory controller

3/3 - introduce a css_tryget() function similar to the one proposed by
Kamezawa, but avoiding spurious refcount failures in the event of a race between a css_tryget() and an unsuccessful cgroup_rmdir()

Future patches will likely involve:

- using hierarchy mutex in place of cgroup_lock() in more subsystems where appropriate

- restoring the atomicity of cgroup_rmdir() with respect to cgroup_create()