mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-17 20:54:10 +00:00
mm, slab: move memcg_cache_params structure to mm/slab.h
The memcg_cache_params structure is only embedded into the kmem_cache of slab and slub allocators as defined in slab_def.h and slub_def.h and used internally by mm code. There is no needed to expose it in a public header. So move it from include/linux/slab.h to mm/slab.h. It is just a refactoring patch with no code change. In fact both the slub_def.h and slab_def.h should be moved into the mm directory as well, but that will probably cause many merge conflicts. Link: http://lkml.kernel.org/r/20190718180827.18758-1-longman@redhat.com Signed-off-by: Waiman Long <longman@redhat.com> Acked-by: David Rientjes <rientjes@google.com> Cc: Christoph Lameter <cl@linux.com> Cc: Pekka Enberg <penberg@kernel.org> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Roman Gushchin <guro@fb.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Shakeel Butt <shakeelb@google.com> Cc: Vladimir Davydov <vdavydov.dev@gmail.com> Cc: Michal Hocko <mhocko@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
04f768a39d
commit
9adeaa2269
2 changed files with 63 additions and 62 deletions
|
@ -595,68 +595,6 @@ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node)
|
||||||
return __kmalloc_node(size, flags, node);
|
return __kmalloc_node(size, flags, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct memcg_cache_array {
|
|
||||||
struct rcu_head rcu;
|
|
||||||
struct kmem_cache *entries[0];
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is the main placeholder for memcg-related information in kmem caches.
|
|
||||||
* Both the root cache and the child caches will have it. For the root cache,
|
|
||||||
* this will hold a dynamically allocated array large enough to hold
|
|
||||||
* information about the currently limited memcgs in the system. To allow the
|
|
||||||
* array to be accessed without taking any locks, on relocation we free the old
|
|
||||||
* version only after a grace period.
|
|
||||||
*
|
|
||||||
* Root and child caches hold different metadata.
|
|
||||||
*
|
|
||||||
* @root_cache: Common to root and child caches. NULL for root, pointer to
|
|
||||||
* the root cache for children.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* @root_caches_node: List node for slab_root_caches list.
|
|
||||||
*
|
|
||||||
* @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.
|
|
||||||
*
|
|
||||||
* @kmem_caches_node: List node for @memcg->kmem_caches list.
|
|
||||||
*/
|
|
||||||
struct memcg_cache_params {
|
|
||||||
struct kmem_cache *root_cache;
|
|
||||||
union {
|
|
||||||
struct {
|
|
||||||
struct memcg_cache_array __rcu *memcg_caches;
|
|
||||||
struct list_head __root_caches_node;
|
|
||||||
struct list_head children;
|
|
||||||
bool dying;
|
|
||||||
};
|
|
||||||
struct {
|
|
||||||
struct mem_cgroup *memcg;
|
|
||||||
struct list_head children_node;
|
|
||||||
struct list_head kmem_caches_node;
|
|
||||||
struct percpu_ref refcnt;
|
|
||||||
|
|
||||||
void (*work_fn)(struct kmem_cache *);
|
|
||||||
union {
|
|
||||||
struct rcu_head rcu_head;
|
|
||||||
struct work_struct work;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
int memcg_update_all_caches(int num_memcgs);
|
int memcg_update_all_caches(int num_memcgs);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
63
mm/slab.h
63
mm/slab.h
|
@ -30,6 +30,69 @@ struct kmem_cache {
|
||||||
struct list_head list; /* List of all slab caches on the system */
|
struct list_head list; /* List of all slab caches on the system */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#else /* !CONFIG_SLOB */
|
||||||
|
|
||||||
|
struct memcg_cache_array {
|
||||||
|
struct rcu_head rcu;
|
||||||
|
struct kmem_cache *entries[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is the main placeholder for memcg-related information in kmem caches.
|
||||||
|
* Both the root cache and the child caches will have it. For the root cache,
|
||||||
|
* this will hold a dynamically allocated array large enough to hold
|
||||||
|
* information about the currently limited memcgs in the system. To allow the
|
||||||
|
* array to be accessed without taking any locks, on relocation we free the old
|
||||||
|
* version only after a grace period.
|
||||||
|
*
|
||||||
|
* Root and child caches hold different metadata.
|
||||||
|
*
|
||||||
|
* @root_cache: Common to root and child caches. NULL for root, pointer to
|
||||||
|
* the root cache for children.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* @root_caches_node: List node for slab_root_caches list.
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
*
|
||||||
|
* @kmem_caches_node: List node for @memcg->kmem_caches list.
|
||||||
|
*/
|
||||||
|
struct memcg_cache_params {
|
||||||
|
struct kmem_cache *root_cache;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
struct memcg_cache_array __rcu *memcg_caches;
|
||||||
|
struct list_head __root_caches_node;
|
||||||
|
struct list_head children;
|
||||||
|
bool dying;
|
||||||
|
};
|
||||||
|
struct {
|
||||||
|
struct mem_cgroup *memcg;
|
||||||
|
struct list_head children_node;
|
||||||
|
struct list_head kmem_caches_node;
|
||||||
|
struct percpu_ref refcnt;
|
||||||
|
|
||||||
|
void (*work_fn)(struct kmem_cache *);
|
||||||
|
union {
|
||||||
|
struct rcu_head rcu_head;
|
||||||
|
struct work_struct work;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
#endif /* CONFIG_SLOB */
|
#endif /* CONFIG_SLOB */
|
||||||
|
|
||||||
#ifdef CONFIG_SLAB
|
#ifdef CONFIG_SLAB
|
||||||
|
|
Loading…
Add table
Reference in a new issue