Re: [PATCH 3/3] mm/mglru: retry the same type once if isolation fails due to races

Ridong Chen <[email protected]>
Newsgroups org.kvack.linux-mm,org.kernel.vger.linux-kernel
Message-ID <[email protected]>

On 8/20/2026 12:56 PM, Barry Song (Xiaomi) wrote:
> If we are not exhausted (i.e., there are still folios in the
> reclaimable generations) but fail to isolate any folios due to
> promotions, protections, or races, retry once more to avoid going
> through the outer loop again.
> 
> Signed-off-by: Barry Song (Xiaomi) <[email protected]>
> ---
>   mm/vmscan.c | 10 +++++++++-
>   1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 1f2e574b0061..1f302386d8ab 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -4862,7 +4862,7 @@ static int isolate_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
>   	bool type_fallback_allowed = !is_single_type_reclaim(swappiness);
>   	int type = get_type_to_scan(lruvec, swappiness);
>   	int total_scanned = 0, scanned, tier;
> -	bool exhausted;
> +	bool exhausted, tried = false;
>   
>   retry:
>   	tier = get_tier_idx(lruvec, type);
> @@ -4885,6 +4885,14 @@ static int isolate_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
>   		type_fallback_allowed = false;
>   		goto retry;
>   	}
> +	/*
> +	 * We are not exhausted, but failed to isolate any folios due to
> +	 * promotions, protections, or races. Retry once to avoid a larger loop.
> +	 */
> +	if (!exhausted && !tried) {
> +		tried = true;
> +		goto retry;
> +	}
>   
>   	return total_scanned;
>   }

LGTM.

Reviewed-by: Ridong Chen <[email protected]>

-- 
Best regards
Ridong
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.