On Wed, Mar 21, 2018 at 04:21:40PM +0300, Kirill Tkhai wrote:
> +++ b/include/linux/memcontrol.h
> @@ -151,6 +151,11 @@ struct mem_cgroup_thresholds {
>       struct mem_cgroup_threshold_ary *spare;
>  };
>  
> +struct shrinkers_map {
> +     struct rcu_head rcu;
> +     unsigned long *map[0];
> +};
> +
>  enum memcg_kmem_state {
>       KMEM_NONE,
>       KMEM_ALLOCATED,
> @@ -182,6 +187,9 @@ struct mem_cgroup {
>       unsigned long low;
>       unsigned long high;
>  
> +     /* Bitmap of shrinker ids suitable to call for this memcg */
> +     struct shrinkers_map __rcu *shrinkers_map;
> +
>       /* Range enforcement for interrupt charges */
>       struct work_struct high_work;
>  

Why use your own bitmap here?  Why not use an IDA which can grow and
shrink automatically without you needing to play fun games with RCU?

Reply via email to