slab: reorganize memcg_cache_params
We're going to change how memcg caches are iterated. In preparation, clean up and reorganize memcg_cache_params. * The shared ->list is replaced by ->children in root and ->children_node in children. * ->is_root_cache is removed. Instead ->root_cache is moved out of the child union and now used by both root and children. NULL indicates root cache. Non-NULL a memcg one. This patch doesn't cause any observable behavior changes. Link: http://lkml.kernel.org/r/20170117235411.9408-5-tj@kernel.org Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Vladimir Davydov <vdavydov.dev@gmail.com> Cc: Christoph Lameter <cl@linux.com> Cc: Pekka Enberg <penberg@kernel.org> Cc: David Rientjes <rientjes@google.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
657dc2f972
commit
9eeadc8b6e
@@ -545,22 +545,37 @@ struct memcg_cache_array {
|
||||
* array to be accessed without taking any locks, on relocation we free the old
|
||||
* version only after a grace period.
|
||||
*
|
||||
* Child caches will hold extra metadata needed for its operation. Fields are:
|
||||
* Root and child caches hold different metadata.
|
||||
*
|
||||
* @memcg: pointer to the memcg this cache belongs to
|
||||
* @root_cache: pointer to the global, root cache, this cache was derived from
|
||||
* @root_cache: Common to root and child caches. NULL for root, pointer to
|
||||
* the root cache for children.
|
||||
*
|
||||
* Both root and child caches of the same kind are linked into a list chained
|
||||
* through @list.
|
||||
* The following fields are specific to root caches.
|
||||
*
|
||||
* @memcg_caches: kmemcg ID indexed table of child caches. This table is
|
||||
* used to index child cachces during allocation and cleared
|
||||
* early during shutdown.
|
||||
*
|
||||
* @children: List of all child caches. While the child caches are also
|
||||
* reachable through @memcg_caches, a child cache remains on
|
||||
* this list until it is actually destroyed.
|
||||
*
|
||||
* The following fields are specific to child caches.
|
||||
*
|
||||
* @memcg: Pointer to the memcg this cache belongs to.
|
||||
*
|
||||
* @children_node: List node for @root_cache->children list.
|
||||
*/
|
||||
struct memcg_cache_params {
|
||||
bool is_root_cache;
|
||||
struct list_head list;
|
||||
struct kmem_cache *root_cache;
|
||||
union {
|
||||
struct memcg_cache_array __rcu *memcg_caches;
|
||||
struct {
|
||||
struct memcg_cache_array __rcu *memcg_caches;
|
||||
struct list_head children;
|
||||
};
|
||||
struct {
|
||||
struct mem_cgroup *memcg;
|
||||
struct kmem_cache *root_cache;
|
||||
struct list_head children_node;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Reference in New Issue
Block a user