mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
mm/damon/lru_sort: use damon_call() repeat mode instead of damon_callback
DAMON_LRU_SORT uses damon_callback for periodically reading and writing DAMON internal data and parameters. Use its alternative, damon_call() repeat mode. Link: https://lkml.kernel.org/r/20250712195016.151108-6-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
5da7c70318
commit
9cc8f00e52
|
|
@ -230,6 +230,39 @@ static int damon_lru_sort_apply_parameters(void)
|
|||
return err;
|
||||
}
|
||||
|
||||
static int damon_lru_sort_handle_commit_inputs(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (!commit_inputs)
|
||||
return 0;
|
||||
|
||||
err = damon_lru_sort_apply_parameters();
|
||||
commit_inputs = false;
|
||||
return err;
|
||||
}
|
||||
|
||||
static int damon_lru_sort_damon_call_fn(void *arg)
|
||||
{
|
||||
struct damon_ctx *c = arg;
|
||||
struct damos *s;
|
||||
|
||||
/* update the stats parameter */
|
||||
damon_for_each_scheme(s, c) {
|
||||
if (s->action == DAMOS_LRU_PRIO)
|
||||
damon_lru_sort_hot_stat = s->stat;
|
||||
else if (s->action == DAMOS_LRU_DEPRIO)
|
||||
damon_lru_sort_cold_stat = s->stat;
|
||||
}
|
||||
|
||||
return damon_lru_sort_handle_commit_inputs();
|
||||
}
|
||||
|
||||
static struct damon_call_control call_control = {
|
||||
.fn = damon_lru_sort_damon_call_fn,
|
||||
.repeat = true,
|
||||
};
|
||||
|
||||
static int damon_lru_sort_turn(bool on)
|
||||
{
|
||||
int err;
|
||||
|
|
@ -249,7 +282,7 @@ static int damon_lru_sort_turn(bool on)
|
|||
if (err)
|
||||
return err;
|
||||
kdamond_pid = ctx->kdamond->pid;
|
||||
return 0;
|
||||
return damon_call(ctx, &call_control);
|
||||
}
|
||||
|
||||
static int damon_lru_sort_enabled_store(const char *val,
|
||||
|
|
@ -288,38 +321,6 @@ module_param_cb(enabled, &enabled_param_ops, &enabled, 0600);
|
|||
MODULE_PARM_DESC(enabled,
|
||||
"Enable or disable DAMON_LRU_SORT (default: disabled)");
|
||||
|
||||
static int damon_lru_sort_handle_commit_inputs(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (!commit_inputs)
|
||||
return 0;
|
||||
|
||||
err = damon_lru_sort_apply_parameters();
|
||||
commit_inputs = false;
|
||||
return err;
|
||||
}
|
||||
|
||||
static int damon_lru_sort_after_aggregation(struct damon_ctx *c)
|
||||
{
|
||||
struct damos *s;
|
||||
|
||||
/* update the stats parameter */
|
||||
damon_for_each_scheme(s, c) {
|
||||
if (s->action == DAMOS_LRU_PRIO)
|
||||
damon_lru_sort_hot_stat = s->stat;
|
||||
else if (s->action == DAMOS_LRU_DEPRIO)
|
||||
damon_lru_sort_cold_stat = s->stat;
|
||||
}
|
||||
|
||||
return damon_lru_sort_handle_commit_inputs();
|
||||
}
|
||||
|
||||
static int damon_lru_sort_after_wmarks_check(struct damon_ctx *c)
|
||||
{
|
||||
return damon_lru_sort_handle_commit_inputs();
|
||||
}
|
||||
|
||||
static int __init damon_lru_sort_init(void)
|
||||
{
|
||||
int err = damon_modules_new_paddr_ctx_target(&ctx, &target);
|
||||
|
|
@ -327,8 +328,7 @@ static int __init damon_lru_sort_init(void)
|
|||
if (err)
|
||||
goto out;
|
||||
|
||||
ctx->callback.after_wmarks_check = damon_lru_sort_after_wmarks_check;
|
||||
ctx->callback.after_aggregation = damon_lru_sort_after_aggregation;
|
||||
call_control.data = ctx;
|
||||
|
||||
/* 'enabled' has set before this function, probably via command line */
|
||||
if (enabled)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user