Thread (24 messages) 24 messages, 4 authors, 2013-07-15

Re: [PATCH 1/3] vmpressure: document why css_get/put is not necessary for work queue based signaling

From: Michal Hocko <hidden>
Date: 2013-07-15 10:28:02
Also in: linux-mm

On Fri 12-07-13 11:48:36, Tejun Heo wrote:
On Fri, Jul 12, 2013 at 11:24:56AM +0200, Michal Hocko wrote:
quoted
Cgroup events are unregistered from the workqueue context by
cgroup_event_remove scheduled by cgroup_destroy_locked (when a cgroup is
removed by rmdir).

cgroup_event_remove removes the eventfd wait queue from the work
queue, then it unregisters all the registered events and finally
puts a reference to the cgroup dentry. css_free which triggers memcg
deallocation is called after the last reference is dropped.

The scheduled vmpressure work item either happens before
cgroup_event_remove or it is not triggered at all so it always happen
_before_ the last dput thus css_free.
I don't follow what the above has to do with ensuring work item
execution is finished before the underlying data structure is
released.  How are the above relevant?  What am I missing here?
OK, it seems I managed to confuse myself. I thought that 
remove_wait_queue(event->wqh, &event->wait) called from
cgroup_event_remove guarantee that vmpr event would go away with that
workqueue. But now that I am looking at it, vmpr->work seems to be
living in a completely independent queue.
quoted
This patch just documents this trickiness.
This doesn't have to be tricky at all.  It's a *completely* routine
thing.  Would you please stop making it one?
Fair enough. I will repost the series shortly.
-- 
Michal Hocko
SUSE Labs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help