On 8/20/20 11:32 AM, Valeriy Vdovin wrote:

> @@ -565,14 +588,16 @@ static unsigned long shrink_slab_memcg(gfp_t gfp_mask, 
> int nid,
>                * memcg_expand_one_shrinker_map if new shrinkers
>                * were registred in the meanwhile.
>                */
> -             if (!down_read_trylock(&shrinker_rwsem)) {
> -                     freed = freed ? : 1;
> +             if (is_nfs) {
> +                     if (!down_read_trylock(&shrinker_rwsem)) {
> +                             freed = freed ? : 1;
> +                             put_shrinker(shrinker);
> +                             return freed;
> +                     }
>                       put_shrinker(shrinker);
> -                     return freed;
> +                     map = memcg_nid_shrinker_map(memcg, nid);
> +                     nr_max = min(shrinker_nr_max, map->nr_max);
>               }

Need to add rwsem_is_contended() check back. It was here before commit 9e9e35d05

                else if (rwsem_is_contended(&shrinker_rwsem)) {
                        freed = freed ? : 1;
                        break;
                }



> -             put_shrinker(shrinker);
> -             map = memcg_nid_shrinker_map(memcg, nid);
> -             nr_max = min(shrinker_nr_max, map->nr_max);
>       }
>  unlock:
>       up_read(&shrinker_rwsem);
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to