Thread (30 messages) 30 messages, 4 authors, 2014-01-23

Re: [PATCH 3/3] mm/memcg: iteration skip memcgs not yet fully initialized

From: Michal Hocko <hidden>
Date: 2014-01-15 08:21:04
Also in: lkml

On Tue 14-01-14 09:29:04, Tejun Heo wrote:
Hey, Michal.

On Tue, Jan 14, 2014 at 02:30:05PM +0100, Michal Hocko wrote:
quoted
On Mon 13-01-14 17:54:04, Hugh Dickins wrote:
quoted
It is surprising that the mem_cgroup iterator can return memcgs which
have not yet been fully initialized.  By accident (or trial and error?)
this appears not to present an actual problem; but it may be better to
prevent such surprises, by skipping memcgs not yet online.
My understanding was that !online cgroups are not visible for the
iterator. it is css_online that has to be called before they are made
visible.

Tejun?
From the comment above css_for_each_descendant_pre()

 * Walk @root's descendants.  @root is included in the iteration and the
 * first node to be visited.  Must be called under rcu_read_lock().  A
 * descendant css which hasn't finished ->css_online() or already has
 * finished ->css_offline() may show up during traversal and it's each
 * subsystem's responsibility to verify that each @pos is alive.
/me slaps self. I was even reviewing patches which introduced that.
But still I managed to convince myself that online means before online
rather than right after again and again.

Sorry about the confusion.
What it guarantees is that an online css would *always* show up in the
iteration.  It's kinda difficult to guarantee both directions just
with RCU locking.  You gotta make at least one end loose to make it
work with RCU.

Thanks.

-- 
tejun
-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help