On 3/7/23 07:56, Qi Zheng wrote:
From: Kirill Tkhai <tkhai@xxxxx>
After we make slab shrink lockless with SRCU, the longest
sleep unregister_shrinker() will be a sleep waiting for
all do_shrink_slab() calls.
To aviod long unbreakable action in the unregister_shrinker(),
^ avoid
add shrinker_srcu_generation to restore a check similar to the
rwsem_is_contendent() check that we had before.
And for memcg slab shrink, we unlock SRCU and continue
iterations from the next shrinker id.
Signed-off-by: Kirill Tkhai <tkhai@xxxxx>
Signed-off-by: Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx>
Acked-by: Vlastimil Babka <vbabka@xxxxxxx>