Re: [PATCH 3/6] cgroup: introduce cgroup_taskset and use it in subsys->can_attach(), cancel_attach() and attach()
From: Tejun Heo <tj@kernel.org>
Date: 2011-08-25 08:40:06
Hello, On Thu, Aug 25, 2011 at 10:21 AM, KAMEZAWA Hiroyuki [off-list ref] wrote:
quoted
Hmmm... the above is basically identity transformation of the existing code. If the above is broken, the current code is broken too. Is it?Current code is not broken.
Trust me. If the posted code is broken, the current code is too. It is an IDENTITY transformation.
mem_cgroup_can_attach(....., task) need to do real job only when task->mm->owner == task. In this modification, you pass a set of task at once.
Before the change, cgroup would migrate multiple tasks all the same but memcg wouldn't have noticed it unless it opted in explicitly using [can_]attach_task(). When multiple tasks were moving, [can_]attach() would only be called with the leader whether the leader actually is changing cgroup or not. The interface sucked and it wasn't properly documented but that's what was happening. The interface change is just making the breakage obvious - +1 for the new interface. :)
So, mem_cgroup_can_attach() need to check _all_ tasks in tset rather than a first task in tset. please scan and find mm->owner. Anyway, if you merge this onto mm-tree first, I think I can have time to write a fix up if complicated.
As for specific merging order, it shouldn't matter all that much but if you wanna backport fixes for -stable, maybe it would make more sense to sequence the fix before this change. Thank you. -- tejun