All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roman Gushchin <roman.gushchin@linux.dev>
To: Shakeel Butt <shakeel.butt@linux.dev>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Rik van Riel <riel@surriel.com>, Michal Hocko <mhocko@kernel.org>,
	Facebook Kernel Team <kernel-team@fb.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	syzbot+17416257cb95200cba44@syzkaller.appspotmail.com
Subject: Re: [PATCH] mm: vmscan: reset sc->priority on retry
Date: Wed, 29 May 2024 09:20:46 -0700	[thread overview]
Message-ID: <ZldV3pNL6ArlgPyU@P9FQF9L96D> (raw)
In-Reply-To: <20240529154911.3008025-1-shakeel.butt@linux.dev>

On Wed, May 29, 2024 at 08:49:11AM -0700, Shakeel Butt wrote:
> The commit 6be5e186fd65 ("mm: vmscan: restore incremental cgroup
> iteration") added a retry reclaim heuristic to iterate all the cgroups
> before returning an unsuccessful reclaim but missed to reset the
> sc->priority. Let's fix it.
> 
> Reported-and-tested-by: syzbot+17416257cb95200cba44@syzkaller.appspotmail.com
> Fixes: 6be5e186fd65 ("mm: vmscan: restore incremental cgroup iteration")
> Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>

Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev>

Good catch!

> ---
>  mm/vmscan.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index b9170f767353..731b009a142b 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -6317,6 +6317,7 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
>  	 * meaningful forward progress. Avoid false OOMs in this case.
>  	 */
>  	if (!sc->memcg_full_walk) {
> +		sc->priority = initial_priority;
>  		sc->memcg_full_walk = 1;
>  		goto retry;
>  	}
> -- 
> 2.43.0
> 

I wonder if it makes sense to refactor things to be more robust like this:

diff --git a/mm/vmscan.c b/mm/vmscan.c
index d3ae6bf1b65c7..f150e79f736da 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -6246,7 +6246,7 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
        if (!cgroup_reclaim(sc))
                __count_zid_vm_events(ALLOCSTALL, sc->reclaim_idx, 1);

-       do {
+       for (sc->priority = initial_priority; sc->priority >= 0; sc->priority--) {
                if (!sc->proactive)
                        vmpressure_prio(sc->gfp_mask, sc->target_mem_cgroup,
                                        sc->priority);
@@ -6265,7 +6265,7 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
                 */
                if (sc->priority < DEF_PRIORITY - 2)
                        sc->may_writepage = 1;
-       } while (--sc->priority >= 0);
+       }

        last_pgdat = NULL;
        for_each_zone_zonelist_nodemask(zone, z, zonelist, sc->reclaim_idx,
@@ -6318,7 +6318,6 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
         * good, and retry with forcible deactivation if that fails.
         */
        if (sc->skipped_deactivate) {
-               sc->priority = initial_priority;
                sc->force_deactivate = 1;
                sc->skipped_deactivate = 0;
                goto retry;
@@ -6326,7 +6325,6 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,

        /* Untapped cgroup reserves?  Don't OOM, retry. */
        if (sc->memcg_low_skipped) {
-               sc->priority = initial_priority;
                sc->force_deactivate = 0;
                sc->memcg_low_reclaim = 1;
                sc->memcg_low_skipped = 0;


  reply	other threads:[~2024-05-29 16:20 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-29 15:49 [PATCH] mm: vmscan: reset sc->priority on retry Shakeel Butt
2024-05-29 16:20 ` Roman Gushchin [this message]
2024-05-29 17:08   ` Shakeel Butt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZldV3pNL6ArlgPyU@P9FQF9L96D \
    --to=roman.gushchin@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=riel@surriel.com \
    --cc=shakeel.butt@linux.dev \
    --cc=syzbot+17416257cb95200cba44@syzkaller.appspotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.