cgroups: Allow dynamically changing net_classid
authorNina Schiff <ninasc@fb.com>
Fri, 20 Nov 2015 20:31:39 +0000 (12:31 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 23 Nov 2015 17:13:46 +0000 (12:13 -0500)
commit3b13758f51de30618d9c7f3fc174d8d1a3cb13cd
tree3a91e3aa9dbe904c22f81a6336284f4127b2fd2f
parentfe761bcb9046029dbdb277de41e40c1c5ad0cf8c
cgroups: Allow dynamically changing net_classid

The classid of a process is changed either when a process is moved to
or from a cgroup or when the net_cls.classid file is updated.
Previously net_cls only supported propogating these changes to the
cgroup's related sockets when a process was added or removed from the
cgroup. This means it was neccessary to remove and re-add all processes
to a cgroup in order to update its classid. This change introduces
support for doing this dynamically - i.e. when the value is changed in
the net_cls_classid file, this will also trigger an update to the
classid associated with all sockets controlled by the cgroup.
This mimics the behaviour of other cgroup subsystems.
net_prio circumvents this issue by storing an index into a table with
each socket (and so any updates to the table, don't require updating
the value associated with the socket). net_cls, however, passes the
socket the classid directly, and so this additional step is needed.

Signed-off-by: Nina Schiff <ninasc@fb.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/netclassid_cgroup.c