[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20091231051321.GC714@andrew.cmu.edu>
Date: Thu, 31 Dec 2009 00:13:21 -0500
From: Ben Blum <bblum@...rew.cmu.edu>
To: linux-kernel@...r.kernel.org,
containers@...ts.linux-foundation.org, lizf@...fujitsu.com,
akpm@...ux-foundation.org, menage@...gle.com, bblum@...rew.cmu.edu
Subject: [PATCH v4 2/4] cgroups: subsystem module loading interface
On Thu, Dec 31, 2009 at 12:10:50AM -0500, Ben Blum wrote:
> [This is a revision of http://lkml.org/lkml/2009/12/21/211 ]
>
> This patch series implements support for building, loading, and
> unloading subsystems as modules, both within and outside the kernel
> source tree. It provides an interface cgroup_load_subsys() and
> cgroup_unload_subsys() which modular subsystems can use to register and
> depart during runtime. The net_cls classifier subsystem serves as the
> example for a subsystem which can be converted into a module using these
> changes.
>
> Patch #1 sets up the subsys[] array so its contents can be dynamic as
> modules appear and (eventually) disappear. Iterations over the array are
> modified to handle when subsystems are absent, and the dynamic section
> of the array is protected by cgroup_mutex.
>
> Patch #2 implements an interface for modules to load subsystems, called
> cgroup_load_subsys, similar to cgroup_init_subsys, and adds a module
> pointer in struct cgroup_subsys.
>
> Patch #3 adds a mechanism for unloading modular subsystems, which
> includes a more advanced rework of the rudimentary reference counting
> introduced in patch 2.
>
> Patch #4 modifies the net_cls subsystem, which already had some module
> declarations, to be configurable as a module, which also serves as a
> simple proof-of-concept.
>
> Part of implementing patches 2 and 4 involved updating css pointers in
> each css_set when the module appears or leaves. In doing this, it was
> discovered that css_sets always remain linked to the dummy cgroup,
> regardless of whether or not any subsystems are actually bound to it
> (i.e., not mounted on an actual hierarchy). The subsystem loading and
> unloading code therefore should keep in mind the special cases where the
> added subsystem is the only one in the dummy cgroup (and therefore all
> css_sets need to be linked back into it) and where the removed subsys
> was the only one in the dummy cgroup (and therefore all css_sets should
> be unlinked from it) - however, as all css_sets always stay attached to
> the dummy cgroup anyway, these cases are ignored. Any fix that addresses
> this issue should also make sure these cases are addressed in the
> subsystem loading and unloading code.
>
> -- bblum
>
> ---
> Documentation/cgroups/cgroups.txt | 9
> include/linux/cgroup.h | 18 +
> kernel/cgroup.c | 388 +++++++++++++++++++++++++++++++++-----
> net/sched/Kconfig | 5
> net/sched/cls_cgroup.c | 36 ++-
> 5 files changed, 400 insertions(+), 56 deletions(-)
>
>
View attachment "cgroups-subsys-module-interface.patch" of type "text/plain" (7311 bytes)
Powered by blists - more mailing lists