All of lore.kernel.org
 help / color / mirror / Atom feed
From: SJ Park <sj@kernel.org>
To: SJ Park <sj@kernel.org>
Cc: dayou5941@163.com, akpm@linux-foundation.org,
	damon@lists.linux.dev, liyouhong <liyouhong@kylinos.cn>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 2/2] mm/damon/ops-common: factor out damon_putback_folio_list()
Date: Fri, 24 Jul 2026 07:56:19 -0700	[thread overview]
Message-ID: <20260724145620.94967-1-sj@kernel.org> (raw)
In-Reply-To: <20260724143917.94375-1-sj@kernel.org>

On Fri, 24 Jul 2026 07:39:24 -0700 SJ Park <sj@kernel.org> wrote:

> 'get_maintainer.pl --nogit --nogit-fallback' suggests adding below recipients.
> I added them.  Please consier using get_maintainer.pl from the next time.
> 
> - linux-mm@kvack.org
> - linux-kernel@vger.kernel.org
> 
> On Fri, 24 Jul 2026 14:01:35 +0800 dayou5941@163.com wrote:
> 
> > From: liyouhong <liyouhong@kylinos.cn>
> > 
> > The putback loop is duplicated in damon_migrate_folio_list() and on the
> > invalid-nid path of damon_migrate_pages().  Factor it into a small helper
> > for readability.  No functional change.
> 
> This is not a hotfix.  I'd suggest sending this separately, not together with
> the first patch of this series.  Sending hotfix together with non-hotfix when
> they don't really need to be applied together only makes it complicated.
> 
> > 
> > Signed-off-by: liyouhong <liyouhong@kylinos.cn>
> > ---
> >  mm/damon/ops-common.c | 25 +++++++++++++------------
> >  1 file changed, 13 insertions(+), 12 deletions(-)
> > 
> > diff --git a/mm/damon/ops-common.c b/mm/damon/ops-common.c
> > index f5ded45fabd1..9a1e8aec5444 100644
> > --- a/mm/damon/ops-common.c
> > +++ b/mm/damon/ops-common.c
> > @@ -331,12 +331,22 @@ static unsigned int __damon_migrate_folio_list(
> >  	return nr_succeeded;
> >  }
> >  
> > +static void damon_putback_folio_list(struct list_head *folio_list)
> > +{
> > +	struct folio *folio;
> > +
> > +	while (!list_empty(folio_list)) {
> > +		folio = lru_to_folio(folio_list);
> > +		list_del(&folio->lru);
> > +		folio_putback_lru(folio);
> > +	}
> > +}
> > +
> >  static unsigned int damon_migrate_folio_list(struct list_head *folio_list,
> >  						struct pglist_data *pgdat,
> >  						int target_nid)
> >  {
> >  	unsigned int nr_migrated = 0;
> > -	struct folio *folio;

I forgot mentioning this breaks build, as Sashiko also pointed [1] out.  This
patch cannot be applied as-is.

[1] https://lore.kernel.org/20260724060707.CE1F81F000E9@smtp.kernel.org


Thanks,
SJ

> >  	LIST_HEAD(ret_folios);
> >  	LIST_HEAD(migrate_folios);
> >  
> > @@ -374,11 +384,7 @@ static unsigned int damon_migrate_folio_list(struct list_head *folio_list,
> >  
> >  	list_splice(&ret_folios, folio_list);
> >  
> > -	while (!list_empty(folio_list)) {
> > -		folio = lru_to_folio(folio_list);
> > -		list_del(&folio->lru);
> > -		folio_putback_lru(folio);
> > -	}
> > +	damon_putback_folio_list(folio_list);
> >  
> >  	return nr_migrated;
> >  }
> > @@ -395,12 +401,7 @@ unsigned long damon_migrate_pages(struct list_head *folio_list, int target_nid)
> >  
> >  	if (target_nid < 0 || target_nid >= MAX_NUMNODES ||
> >  			!node_state(target_nid, N_MEMORY)) {
> > -		while (!list_empty(folio_list)) {
> > -			struct folio *folio = lru_to_folio(folio_list);
> > -
> > -			list_del(&folio->lru);
> > -			folio_putback_lru(folio);
> > -		}
> > +		damon_putback_folio_list(folio_list);
> >  		return nr_migrated;
> >  	}
> 
> Looks better.  But, how about further simplifying it by moving the folios
> putback from damon_migrate_pages(), and doing that from damon_migrate_pages()?
> damon_migrate_pages() would do the putback always before returning, and the
> taregt_nid path will 'goto' the path.  E.g.,
> 
> --- a/mm/damon/ops-common.c
> +++ b/mm/damon/ops-common.c
> @@ -391,15 +391,8 @@ unsigned long damon_migrate_pages(struct list_head *folio_list, int target_nid)
>                 return nr_migrated;
> 
>         if (target_nid < 0 || target_nid >= MAX_NUMNODES ||
> -                       !node_state(target_nid, N_MEMORY)) {
> -               while (!list_empty(folio_list)) {
> -                       struct folio *folio = lru_to_folio(folio_list);
> -
> -                       list_del(&folio->lru);
> -                       folio_putback_lru(folio);
> -               }
> -               return nr_migrated;
> -       }
> +                       !node_state(target_nid, N_MEMORY))
> +               goto out;
> 
>         noreclaim_flag = memalloc_noreclaim_save();
> 
> @@ -424,6 +417,14 @@ unsigned long damon_migrate_pages(struct list_head *folio_list, int target_nid)
> 
>         memalloc_noreclaim_restore(noreclaim_flag);
> 
> +out:
> +
> +       while (!list_empty(folio_list)) {
> +               struct folio *folio = lru_to_folio(folio_list);
> +
> +               list_del(&folio->lru);
> +               folio_putback_lru(folio);
> +       }
>         return nr_migrated;
>  }
> 
> This could be applied to the first patch.  And this patch can simply remove the
> redundanty putback.
> 
> >  
> > -- 
> > 2.25.1
> 
> [1] https://lore.kernel.org/20260724060707.CE1F81F000E9@smtp.kernel.org
> 
> 
> Thanks,
> SJ
> 

  reply	other threads:[~2026-07-24 14:56 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-24  6:01 [PATCH v2 1/2] mm/damon/ops-common: putback folios on invalid migrate nid dayou5941
2026-07-24  6:01 ` [PATCH v2 2/2] mm/damon/ops-common: factor out damon_putback_folio_list() dayou5941
2026-07-24  6:07   ` sashiko-bot
2026-07-24 14:39   ` SJ Park
2026-07-24 14:56     ` SJ Park [this message]
2026-07-24 14:26 ` [PATCH v2 1/2] mm/damon/ops-common: putback folios on invalid migrate nid SJ Park
2026-07-24 14:30   ` SJ Park
2026-07-24 14:41 ` SJ Park
2026-07-24 15:56   ` SJ Park

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=20260724145620.94967-1-sj@kernel.org \
    --to=sj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=damon@lists.linux.dev \
    --cc=dayou5941@163.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=liyouhong@kylinos.cn \
    /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.