Files
kernel-tenderloin-3.0/include/linux
Colin Cross dbc38c633f cgroup: Remove call to synchronize_rcu in cgroup_attach_task
synchronize_rcu can be very expensive, averaging 100 ms in
some cases.  In cgroup_attach_task, it is used to prevent
a task->cgroups pointer dereferenced in an RCU read side
critical section from being invalidated, by delaying the
call to put_css_set until after an RCU grace period.

To avoid the call to synchronize_rcu, make the put_css_set
call rcu-safe by moving the deletion of the css_set links
into free_css_set_work, scheduled by the rcu callback
free_css_set_rcu.

The decrement of the cgroup refcount is no longer
synchronous with the call to put_css_set, which can result
in the cgroup refcount staying positive after the last call
to cgroup_attach_task returns.  To allow the cgroup to be
deleted with cgroup_rmdir synchronously after
cgroup_attach_task, have rmdir check the refcount of all
associated css_sets.  If cgroup_rmdir is called on a cgroup
for which the css_sets all have refcount zero but the
cgroup refcount is nonzero, reuse the rmdir waitqueue to
block the rmdir until free_css_set_work is called.

Signed-off-by: Colin Cross <ccross@android.com>
2011-06-14 09:09:40 -07:00
..
2011-05-26 19:45:40 +02:00
2011-06-01 11:36:49 +01:00
2011-06-14 09:09:33 -07:00
2011-06-14 09:08:46 -07:00
2011-06-14 09:08:46 -07:00
2011-05-28 17:41:46 +02:00
2011-05-31 13:45:53 +02:00
2011-05-26 17:12:34 -07:00
2011-05-23 10:47:06 -05:00
2011-05-29 13:03:09 +01:00
2011-05-24 10:21:29 +02:00
2011-05-24 10:21:29 +02:00
2011-06-14 09:08:41 -07:00
2011-06-09 15:05:48 -07:00
2011-05-23 13:59:54 +02:00
2011-05-26 12:03:50 -07:00
2011-05-25 20:43:32 +02:00
2011-06-14 09:09:14 -07:00
2011-05-26 17:12:37 -07:00
2011-05-25 08:39:52 -07:00
2011-06-14 09:08:48 -07:00
2011-05-24 22:55:24 +10:00
2011-05-24 14:33:35 +02:00
2011-05-29 11:32:28 -07:00
2011-06-14 09:08:46 -07:00
2011-05-29 20:54:36 +03:00
2011-05-26 17:12:34 -07:00
2011-05-26 17:12:37 -07:00
2011-05-24 12:10:51 +02:00
2011-05-25 08:39:19 -07:00
2011-05-26 13:38:58 +10:00
2011-06-07 09:05:42 -07:00
2011-05-30 11:14:16 +09:30
2011-06-14 09:08:41 -07:00