Hello, On Wed, Sep 24, 2014 at 01:16:53PM -0400, Johannes Weiner wrote: > Tejun, should maybe the iterators not return css before they have > CSS_ONLINE set? It seems odd to have memcg reach into cgroup like > that to check if published objects are actually fully initialized. > Background is this patch: So, memcontrol shouldn't be doing that but at the same time cgroup core can't do it for any controller. One of the requirements of the iterations is that it shouldn't miss any css which has been onlined by its controller; however, because each controller defines its own locking, cgroup core has no way knowing when a css finishes initialization. If it includes after ->css_online() is complete, the iteration may happen between when the controller considers the css fully initialized and cgroup core sets CSS_ONLINE. The only thing cgroup core can do is including all csses which *could* be considered online by the controller and let it filter accordingly. IOW, the precise moment a css becomes online is not known to the cgroup core as cgroup core locking and controller locking are completely independent. The current memcg implementation is broken in that memcg iterator is testing CSS_ONLINE which is set *after* ->css_online() is complete and iterations can happen inbetween where the online css may be omitted because it's not marked online by cgroup core yet. This may be okay for memcg's use of iterators but for things like freezer, for example, this can break things horribly. Anyways, the right thing to do is removing the CSS_ONLINE testing and implementing memcg's own way of marking an object as fully initialized according to its synchronization and iteration requirements. So, yeah, it's a glaring layering violation which should be removed. Thanks. -- tejun -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>