diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 455525e49c727876cce33d4b94f9ffd7fbfe6116..3fb21ea5dcf9b544c979685c72b0c112b167ce17 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -8600,7 +8600,8 @@ int cache_limit_ratio_sysctl_handler(struct ctl_table *table, int write, vm_cache_limit_ratio); else pr_warn("page cache limit off\n"); - while (vm_cache_limit_mbytes && page_cache_over_limit()) + while (vm_cache_limit_mbytes && page_cache_over_limit() && + vm_cache_reclaim_enable) shrink_page_cache(GFP_KERNEL); } @@ -8628,7 +8629,8 @@ int cache_limit_mbytes_sysctl_handler(struct ctl_table *table, int write, else pr_warn("page cache limit off\n"); - while (vm_cache_limit_mbytes && page_cache_over_limit()) + while (vm_cache_limit_mbytes && page_cache_over_limit() && + vm_cache_reclaim_enable) shrink_page_cache(GFP_KERNEL); } diff --git a/mm/vmscan.c b/mm/vmscan.c index 208ee8653da627b6994061743ef3c4b3cc42596d..39b06e6eaa0f070fd15f09ac11e89a904b91da59 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3562,7 +3562,8 @@ static int balance_pgdat(pg_data_t *pgdat, int order, int classzone_idx) kernel_swap_check(&sc); #ifdef CONFIG_SHRINK_PAGECACHE - if (vm_cache_limit_mbytes && page_cache_over_limit()) + if (vm_cache_limit_mbytes && page_cache_over_limit() && + vm_cache_reclaim_enable) shrink_page_cache(GFP_KERNEL); #endif