Messages in this thread |  | | Date | Mon, 3 Oct 2011 09:22:44 +0900 | | From | Daisuke Nishimura <> | | Subject | Re: [BUGFIX] cgroup: create a workqueue for cgroup |
| |
On Fri, 30 Sep 2011 15:30:49 -0700 Andrew Morton <akpm00@gmail.com> wrote:
> On Fri, 30 Sep 2011 16:54:52 +0900 > Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> wrote: > > > In commit:f90d4118, cpuset_wq, a separate workqueue for cpuset, was introduced > > to avoid a dead lock against cgroup_mutex between async_rebuild_sched_domains() > > and cgroup_tasks_write(). > > > > But check_for_release() has a similar problem: > > > > check_for_release() > > schedule_work(release_agent_work) > > cgroup_release_agent() > > mutex_lock(&cgroup_mutex) > > > > And I actually see a lockup which seems to be caused by this problem > > on 2.6.32-131.0.15.el6.x86_64. > > Are you sure the bug is still present in current kernels? Perhaps > Tejun's workqueue changes magically made it go away. > Not yet, but I'll check it.
> > > > ... > > --- a/include/linux/cgroup.h > > +++ b/include/linux/cgroup.h > > @@ -27,6 +27,8 @@ struct css_id; > > > > extern int cgroup_init_early(void); > > extern int cgroup_init(void); > > +extern void cgroup_wq_init(void); > > +extern void queue_cgroup_work(struct work_struct *work); > > extern void cgroup_lock(void); > > extern int cgroup_lock_is_held(void); > > extern bool cgroup_lock_live_group(struct cgroup *cgrp); > > Can we spot the odd man out? > > I shall rename queue_cgroup_work() to cgroup_queue_work(). > Thank you for fixing it. I agree cgroup_queue_work() is a better name.
Thanks, Daisuke Nishimura.
|  |