• Vladimir Davydov's avatar
    memcg: move memcg_{alloc,free}_cache_params to slab_common.c · 33a690c4
    Vladimir Davydov authored
    The only reason why they live in memcontrol.c is that we get/put css
    reference to the owner memory cgroup in them.  However, we can do that in
    memcg_{un,}register_cache.  OTOH, there are several reasons to move them
    to slab_common.c.
    
    First, I think that the less public interface functions we have in
    memcontrol.h the better.  Since the functions I move don't depend on
    memcontrol, I think it's worth making them private to slab, especially
    taking into account that the arrays are defined on the slab's side too.
    
    Second, the way how per-memcg arrays are updated looks rather awkward: it
    proceeds from memcontrol.c (__memcg_activate_kmem) to slab_common.c
    (memcg_update_all_caches) and back to memcontrol.c again
    (memcg_update_array_size).  In the following patches I move the function
    relocating the arrays (memcg_update_array_size) to slab_common.c and
    therefore get rid this circular call path.  I think we should have the
    cache allocation stuff in the same place where we have relocation, because
    it's easier to follow the code then.  So I move arrays alloc/free
    functions to slab_common.c too.
    
    The third point isn't obvious.  I'm going to make the list_lru structure
    per-memcg to allow targeted kmem reclaim.  That means we will have
    per-memcg arrays in list_lrus too.  It turns out that it's much easier to
    update these arrays in list_lru.c rather than in memcontrol.c, because all
    the stuff we need is defined there.  This patch makes memcg caches arrays
    allocation path conform that of the upcoming list_lru.
    
    So let's move these functions to slab_common.c and make them static.
    Signed-off-by: default avatarVladimir Davydov <vdavydov@parallels.com>
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Glauber Costa <glommer@gmail.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    33a690c4
memcontrol.c 176 KB