]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/damon/core: unset damos->walk_completed after confimed set
authorSeongJae Park <sj@kernel.org>
Mon, 10 Feb 2025 18:27:34 +0000 (10:27 -0800)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 28 Feb 2025 00:59:54 +0000 (16:59 -0800)
Patch series "mm/damon/core: fix wrong and/or useless damos_walk()
behaviors".

damos_walk() can finish working earlier or later than expected, and start
earlier than practical.  First two behaviors are clearly wrong behavior
(doesn't follow the documentation) and all three behaviors are only making
the feature useless.  Fix those.

This patch (of 3):

damos->walk_completed is only set, not unset.  This can cause next
damos_walk() finish earlier than expected.  Unset it after all
walk_completed is confirmed.

Link: https://lkml.kernel.org/r/20250210182737.134994-1-sj@kernel.org
Link: https://lkml.kernel.org/r/20250210182737.134994-2-sj@kernel.org
Fixes: bf0eaba0ff9c ("mm/damon/core: implement damos_walk()")
Signed-off-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/damon/core.c

index 1a4dd644949b6fdac4c94d26caae338f426e7918..1d9025d14d832f6b083be893095a988594c28966 100644 (file)
@@ -1489,6 +1489,9 @@ static void damos_walk_complete(struct damon_ctx *ctx, struct damos *s)
                if (!siter->walk_completed)
                        return;
        }
+       damon_for_each_scheme(siter, ctx)
+               siter->walk_completed = false;
+
        complete(&control->completion);
        mutex_lock(&ctx->walk_control_lock);
        ctx->walk_control = NULL;