Files
kernel/include/linux
Vladimir Davydov 1aa1325425 memcg, slab: clean up memcg cache initialization/destruction
Currently, we have rather a messy function set relating to per-memcg
kmem cache initialization/destruction.

Per-memcg caches are created in memcg_create_kmem_cache().  This
function calls kmem_cache_create_memcg() to allocate and initialize a
kmem cache and then "registers" the new cache in the
memcg_params::memcg_caches array of the parent cache.

During its work-flow, kmem_cache_create_memcg() executes the following
memcg-related functions:

 - memcg_alloc_cache_params(), to initialize memcg_params of the newly
   created cache;
 - memcg_cache_list_add(), to add the new cache to the memcg_slab_caches
   list.

On the other hand, kmem_cache_destroy() called on a cache destruction
only calls memcg_release_cache(), which does all the work: it cleans the
reference to the cache in its parent's memcg_params::memcg_caches,
removes the cache from the memcg_slab_caches list, and frees
memcg_params.

Such an inconsistency between destruction and initialization paths make
the code difficult to read, so let's clean this up a bit.

This patch moves all the code relating to registration of per-memcg
caches (adding to memcg list, setting the pointer to a cache from its
parent) to the newly created memcg_register_cache() and
memcg_unregister_cache() functions making the initialization and
destruction paths look symmetrical.

Signed-off-by: Vladimir Davydov <vdavydov@parallels.com>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Glauber Costa <glommer@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Balbir Singh <bsingharora@gmail.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Christoph Lameter <cl@linux.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-01-23 16:36:51 -08:00
..
2013-12-23 18:34:58 -08:00
2013-12-12 14:27:57 +01:00
2013-11-08 08:59:44 -07:00
2013-10-28 13:33:58 -06:00
2013-11-15 09:32:23 +09:00
2013-11-15 09:32:21 +09:00
2013-11-09 00:16:29 -05:00
2014-01-16 10:23:02 +10:30
2013-11-15 22:04:17 -05:00
2013-09-29 18:27:03 -07:00
2014-01-16 11:15:50 +01:00
2013-10-16 18:40:57 -07:00
2013-12-10 22:58:13 -08:00
2013-11-15 09:32:23 +09:00
2014-01-08 19:03:00 -02:00
2013-12-11 15:52:34 +01:00
2014-01-16 10:23:03 +10:30
2013-11-09 00:16:19 -05:00
2013-11-09 00:16:19 -05:00
2013-12-10 21:45:15 -05:00
2013-10-14 17:15:48 +02:00
2014-01-22 19:36:57 +01:00
2014-01-21 16:19:42 -08:00
2013-10-17 00:36:06 +02:00
2013-12-18 19:04:50 -08:00
2013-12-08 16:56:05 -08:00
2013-10-17 15:53:09 -04:00