]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/damon/core: commit damos_quota_goal->nid
authorSeongJae Park <sj@kernel.org>
Sat, 19 Jul 2025 18:19:32 +0000 (11:19 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 25 Jul 2025 00:57:59 +0000 (17:57 -0700)
DAMOS quota goal uses 'nid' field when the metric is
DAMOS_QUOTA_NODE_MEM_{USED,FREE}_BP.  But the goal commit function is not
updating the goal's nid field.  Fix it.

Link: https://lkml.kernel.org/r/20250719181932.72944-1-sj@kernel.org
Fixes: 0e1c773b501f ("mm/damon/core: introduce damos quota goal metrics for memory node utilization") [6.16.x]
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/damon/core.c

index 979b29e16ef460b3bc8b03a059c3fe258c660351..339116ea30e30e7f7989214d5757515bcff46263 100644 (file)
@@ -754,6 +754,19 @@ static struct damos_quota_goal *damos_nth_quota_goal(
        return NULL;
 }
 
+static void damos_commit_quota_goal_union(
+               struct damos_quota_goal *dst, struct damos_quota_goal *src)
+{
+       switch (dst->metric) {
+       case DAMOS_QUOTA_NODE_MEM_USED_BP:
+       case DAMOS_QUOTA_NODE_MEM_FREE_BP:
+               dst->nid = src->nid;
+               break;
+       default:
+               break;
+       }
+}
+
 static void damos_commit_quota_goal(
                struct damos_quota_goal *dst, struct damos_quota_goal *src)
 {
@@ -762,6 +775,7 @@ static void damos_commit_quota_goal(
        if (dst->metric == DAMOS_QUOTA_USER_INPUT)
                dst->current_value = src->current_value;
        /* keep last_psi_total as is, since it will be updated in next cycle */
+       damos_commit_quota_goal_union(dst, src);
 }
 
 /**
@@ -795,6 +809,7 @@ int damos_commit_quota_goals(struct damos_quota *dst, struct damos_quota *src)
                                src_goal->metric, src_goal->target_value);
                if (!new_goal)
                        return -ENOMEM;
+               damos_commit_quota_goal_union(new_goal, src_goal);
                damos_add_quota_goal(dst, new_goal);
        }
        return 0;