]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/damon/paddr: use alloc_migartion_target() with no migration fallback nodemask
authorSeongJae Park <sj@kernel.org>
Mon, 16 Jun 2025 17:23:44 +0000 (10:23 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 10 Jul 2025 05:42:12 +0000 (22:42 -0700)
Patch series "mm/damon: use alloc_migrate_target() for
DAMOS_MIGRATE_{HOT,COLD}".

DAMOS_MIGRATE_{HOT,COLD} implementation resembles that for demotion, and
hence the behavior is also similar to that.  But, since those are not only
for demotion but general migrations, it would be better to match with that
for move_pages() system call.  Make the implementation and the behavior
more similar to move_pages() by not setting migration fallback nodes, and
using alloc_migration_target() instead of alloc_migrate_folio().

alloc_migrate_folio() was renamed from alloc_demote_folio() and been
non-static function, to let DAMOS_MIGRATE_{HOT,COLD} call it.  As
alloc_migration_target() is called instead, the renaming and de-static
changes are no more required but could only make future code readers be
confused.  Revert the changes, too.

This patch (of 3):

DAMOS_MIGRATE_{HOT,COLD} implementation resembles that for
demote_folio_list().  Because those are not only for demotion but general
folio migrations, it makes more sense to behave similarly to move_pages()
system call.  Make the behavior more similar to move_pages(), by using
alloc_migration_target() instead of alloc_migrate_folio(), without
fallback nodemask.

Link: https://lkml.kernel.org/r/20250616172346.67659-2-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Joshua Hahn <joshua.hahnjy@gmail.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Honggyu Kim <honggyu.kim@sk.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Shakeel Butt <shakeel.butt@linux.dev>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/damon/paddr.c

index 4102a8c5f9926ddfc32405072bca84dea80bdab0..fcab148e68652434b2ae899dd417109786507f7e 100644 (file)
@@ -386,7 +386,6 @@ static unsigned int __damon_pa_migrate_folio_list(
                int target_nid)
 {
        unsigned int nr_succeeded = 0;
-       nodemask_t allowed_mask = NODE_MASK_NONE;
        struct migration_target_control mtc = {
                /*
                 * Allocate from 'node', or fail quickly and quietly.
@@ -396,7 +395,6 @@ static unsigned int __damon_pa_migrate_folio_list(
                .gfp_mask = (GFP_HIGHUSER_MOVABLE & ~__GFP_RECLAIM) |
                        __GFP_NOWARN | __GFP_NOMEMALLOC | GFP_NOWAIT,
                .nid = target_nid,
-               .nmask = &allowed_mask
        };
 
        if (pgdat->node_id == target_nid || target_nid == NUMA_NO_NODE)
@@ -406,7 +404,7 @@ static unsigned int __damon_pa_migrate_folio_list(
                return 0;
 
        /* Migration ignores all cpuset and mempolicy settings */
-       migrate_pages(migrate_folios, alloc_migrate_folio, NULL,
+       migrate_pages(migrate_folios, alloc_migration_target, NULL,
                      (unsigned long)&mtc, MIGRATE_ASYNC, MR_DAMON,
                      &nr_succeeded);