On 10/22/21 16:46, Mel Gorman wrote: > The page allocator stalls based on the number of pages that are > waiting for writeback to start but this should now be redundant. > shrink_inactive_list() will wake flusher threads if the LRU tail are > unqueued dirty pages so the flusher should be active. If it fails to make > progress due to pages under writeback not being completed quickly then > it should stall on VMSCAN_THROTTLE_WRITEBACK. > > Signed-off-by: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> Acked-by: Vlastimil Babka <vbabka@xxxxxxx> > --- > mm/page_alloc.c | 21 +-------------------- > 1 file changed, 1 insertion(+), 20 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 78e538067651..8fa0109ff417 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -4795,30 +4795,11 @@ should_reclaim_retry(gfp_t gfp_mask, unsigned order, > trace_reclaim_retry_zone(z, order, reclaimable, > available, min_wmark, *no_progress_loops, wmark); > if (wmark) { > - /* > - * If we didn't make any progress and have a lot of > - * dirty + writeback pages then we should wait for > - * an IO to complete to slow down the reclaim and > - * prevent from pre mature OOM > - */ > - if (!did_some_progress) { > - unsigned long write_pending; > - > - write_pending = zone_page_state_snapshot(zone, > - NR_ZONE_WRITE_PENDING); > - > - if (2 * write_pending > reclaimable) { > - congestion_wait(BLK_RW_ASYNC, HZ/10); > - return true; > - } > - } > - > ret = true; > - goto out; > + break; > } > } > > -out: > /* > * Memory allocation/reclaim might be called from a WQ context and the > * current implementation of the WQ concurrency control doesn't >