Commit c32696ca authored by SeongJae Park's avatar SeongJae Park Committed by Andrew Morton
Browse files

mm/damon/core: unset damos->walk_completed after confimed set

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: bf0eaba0 ("mm/damon/core: implement damos_walk()")
Signed-off-by: default avatarSeongJae Park <sj@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 8d9a2f5d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1494,6 +1494,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;