Re: [PATCH] mm/damon/ops-common: factor out damon_putback_folio_list()

SJ Park <[email protected]>
Newsgroups dev.linux.lists.damon,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <[email protected]>
Hello Li,

'get_maintainer.pl --nogit --nogit-fallback' suggests adding below recipients.
I added them.  Please consier using get_maintainer.pl from the next time.

- [email protected]
- [email protected]

On Mon, 17 Aug 2026 14:34:58 +0800 [email protected] wrote:

> From: Li Youhong <[email protected]>
> 
> 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.

Thank you for this patch.

> 
> Signed-off-by: Li Youhong <[email protected]>
> 
> ---
> Note:
> As previously pointed out by the AI regarding whether removing the local
> variable struct folio *folio in the damon_migrate_folio_list()function
> would introduce build-time issues: no build failure will actually occur.
> This is because struct folio *folio is only used inside the while-loop.
> link: https://lore.kernel.org/all/[email protected]/

But, a build on my setup actually fails like below:

    $ make O=../linux.out mm/damon/
    [...]
      CC      mm/damon/ops-common.o
    mm/damon/ops-common.c: In function ‘damon_migrate_folio_list’:
    mm/damon/ops-common.c:357:17: error: ‘folio’ undeclared (first use in this function)
      357 |                 folio = lru_to_folio(folio_list);
          |                 ^~~~~

> 
> ---
>  mm/damon/ops-common.c | 31 +++++++++++++++----------------
>  1 file changed, 15 insertions(+), 16 deletions(-)
> 
> diff --git a/mm/damon/ops-common.c b/mm/damon/ops-common.c
> index 0bcad6b1e5b9..5c0c941b7f75 100644
> --- a/mm/damon/ops-common.c
> +++ b/mm/damon/ops-common.c
> @@ -329,12 +329,24 @@ 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);
> +		node_stat_sub_folio(folio, NR_ISOLATED_ANON +
> +				folio_is_file_lru(folio));
> +		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;

Above declaration removal is causing the build failure.  Let's keep the
declaration.


Thanks,
SJ

[...]
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.