Messages in this thread | | | Date | Thu, 8 Mar 2012 15:16:16 -0500 | From | Vivek Goyal <> | Subject | Re: [PATCHSET] mempool, percpu, blkcg: fix percpu stat allocation and remove stats_lock |
| |
On Thu, Mar 08, 2012 at 10:08:33AM -0800, Tejun Heo wrote:
[..] > > Tejun, I noticed that in UP case, once in a while cgroup removal is > > hanging. Looks like it is hung in cgroup_rmdir() somewhere. I will debug > > more to find out what is happening. May be blkcg->refcount issue. > > It's probably from something forgetting to put cgroup and pre_destroy > waiting for it. Such bugs would have been masked before but now show > up as stalls during rmdir.
I am not sure what is happening here yet. What I have noticed that somebody is holding a reference on blkg->refcnt and that's why css->refcnt is not zero hence rmdir is hanging.
I susect it is cfqq refcount on blkg which is not released till cfqq is reclaimed.
Looking at the code, in general it seems to be a problem. If a task issues bunch of IO, changes the cgroup and does not issue IO any more for some time, that means old cfqq will still be linked to task's cic and still be holding reference to blkg and one can't remove the cgroup.
We had this disucssion in the past. So looks like to get rid of this problem, you will have to drop old cic->cfqq association during cgroup change to avoid hanging rmdir.
Thanks Vivek
| |