From: SeongJae Park Date: Sat, 12 Jul 2025 19:50:05 +0000 (-0700) Subject: mm/damon/stat: use damon_call() repeat mode instead of damon_callback X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=405f61996d9d2e9d497cd9f6b66f41dc28d3d1d8;p=thirdparty%2Flinux.git mm/damon/stat: use damon_call() repeat mode instead of damon_callback DAMON_STAT uses damon_callback for periodically reading DAMON internal data. Use its alternative, damon_call() repeat mode. Link: https://lkml.kernel.org/r/20250712195016.151108-4-sj@kernel.org Signed-off-by: SeongJae Park Signed-off-by: Andrew Morton --- diff --git a/mm/damon/stat.c b/mm/damon/stat.c index b75af871627e8..87bcd8866d4b7 100644 --- a/mm/damon/stat.c +++ b/mm/damon/stat.c @@ -122,8 +122,9 @@ static void damon_stat_set_idletime_percentiles(struct damon_ctx *c) kfree(sorted_regions); } -static int damon_stat_after_aggregation(struct damon_ctx *c) +static int damon_stat_damon_call_fn(void *data) { + struct damon_ctx *c = data; static unsigned long last_refresh_jiffies; /* avoid unnecessarily frequent stat update */ @@ -182,19 +183,29 @@ static struct damon_ctx *damon_stat_build_ctx(void) damon_add_target(ctx, target); if (damon_set_region_biggest_system_ram_default(target, &start, &end)) goto free_out; - ctx->callback.after_aggregation = damon_stat_after_aggregation; return ctx; free_out: damon_destroy_ctx(ctx); return NULL; } +static struct damon_call_control call_control = { + .fn = damon_stat_damon_call_fn, + .repeat = true, +}; + static int damon_stat_start(void) { + int err; + damon_stat_context = damon_stat_build_ctx(); if (!damon_stat_context) return -ENOMEM; - return damon_start(&damon_stat_context, 1, true); + err = damon_start(&damon_stat_context, 1, true); + if (err) + return err; + call_control.data = damon_stat_context; + return damon_call(damon_stat_context, &call_control); } static void damon_stat_stop(void)