This series addresses issues in the zswap global shrinker that could not shrink stored pages. With this series, the shrinker continues to shrink pages until it reaches the accept threshold more reliably. These patches were extracted and updated from the original patch series v2 (mm: zswap: global shrinker fix and proactive shrink): https://lore.kernel.org/linux-mm/20240706022523.1104080-1-flintglass@xxxxxxxxx/ Changes in v3: - Extract fixes for shrinker as a separate patch series. - Fix comments and commit messages. (Chengming, Yosry) - Drop logic to detect rare doubly advancing cursor. (Yosry) Changes in v2: mm: zswap: fix global shrinker memcg iteration: - Change the loop style (Yosry, Nhat, Shakeel) mm: zswap: fix global shrinker error handling logic: - Change error code for no-writeback memcg. (Yosry) - Use nr_scanned to check if lru is empty. (Yosry) Changes in v1: mm: zswap: fix global shrinker memcg iteration: - Drop and reacquire spinlock before skipping a memcg. - Add some comment to clarify the locking mechanism. --- Takero Funaki (2): mm: zswap: fix global shrinker memcg iteration mm: zswap: fix global shrinker error handling logic mm/zswap.c | 100 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 73 insertions(+), 27 deletions(-) -- 2.43.0