diff options
| -rw-r--r-- | mm/vmscan.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 17497d0cd8b9..6771ea70bfe7 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
| @@ -1841,16 +1841,28 @@ static inline bool should_continue_reclaim(struct zone *zone, | |||
| 1841 | if (!(sc->reclaim_mode & RECLAIM_MODE_COMPACTION)) | 1841 | if (!(sc->reclaim_mode & RECLAIM_MODE_COMPACTION)) |
| 1842 | return false; | 1842 | return false; |
| 1843 | 1843 | ||
| 1844 | /* | 1844 | /* Consider stopping depending on scan and reclaim activity */ |
| 1845 | * If we failed to reclaim and have scanned the full list, stop. | 1845 | if (sc->gfp_mask & __GFP_REPEAT) { |
| 1846 | * NOTE: Checking just nr_reclaimed would exit reclaim/compaction far | 1846 | /* |
| 1847 | * faster but obviously would be less likely to succeed | 1847 | * For __GFP_REPEAT allocations, stop reclaiming if the |
| 1848 | * allocation. If this is desirable, use GFP_REPEAT to decide | 1848 | * full LRU list has been scanned and we are still failing |
| 1849 | * if both reclaimed and scanned should be checked or just | 1849 | * to reclaim pages. This full LRU scan is potentially |
| 1850 | * reclaimed | 1850 | * expensive but a __GFP_REPEAT caller really wants to succeed |
| 1851 | */ | 1851 | */ |
| 1852 | if (!nr_reclaimed && !nr_scanned) | 1852 | if (!nr_reclaimed && !nr_scanned) |
| 1853 | return false; | 1853 | return false; |
| 1854 | } else { | ||
| 1855 | /* | ||
| 1856 | * For non-__GFP_REPEAT allocations which can presumably | ||
| 1857 | * fail without consequence, stop if we failed to reclaim | ||
| 1858 | * any pages from the last SWAP_CLUSTER_MAX number of | ||
| 1859 | * pages that were scanned. This will return to the | ||
| 1860 | * caller faster at the risk reclaim/compaction and | ||
| 1861 | * the resulting allocation attempt fails | ||
| 1862 | */ | ||
| 1863 | if (!nr_reclaimed) | ||
| 1864 | return false; | ||
| 1865 | } | ||
| 1854 | 1866 | ||
| 1855 | /* | 1867 | /* |
| 1856 | * If we have not reclaimed enough pages for compaction and the | 1868 | * If we have not reclaimed enough pages for compaction and the |
