Re: [RFC PATCH v2.1 07/17] mm/damon/core: introduce damon_operations->prep_probes()

[email protected] Mon, 27 Jul 2026 14:44:21 +0000
Newsgroups dev.linux.lists.damon
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] Suboptimal short-circuit order in `kdamond_fn` causes unnecessary list traversals when `prep_probes` is not implemented.
--

--- Patch [7]: [RFC PATCH v2.1 07/17] mm/damon/core: introduce damon_operations->prep_probes() ---
commit 6cf31e4df3b58637535e88cd2f6425680fdfa9e6
Author: SJ Park <[email protected]>

mm/damon/core: introduce damon_operations->prep_probes()

This commit introduces a new prep_probes callback to the DAMON operations
set to execute damon_prep actions during monitoring preparation time. It
extends the core to check for and execute this callback if provided by the
underlying operation set.

> diff --git a/mm/damon/core.c b/mm/damon/core.c
> index 127d3a7c27280..19ab80f50bc4b 100644
> --- a/mm/damon/core.c
> +++ b/mm/damon/core.c

[ ... ]

> @@ -3870,14 +3882,19 @@ static int kdamond_fn(void *data)
>  		unsigned long next_ops_update_sis = ctx->next_ops_update_sis;
>  		unsigned long sample_interval = ctx->attrs.sample_interval;
>  		bool access_check_disabled = damon_has_probe_weights(ctx);
> +		bool do_prep;
>  		unsigned int max_merge_score = 0, max_wsum;
>  		bool get_max_wsum;
>  
>  		if (kdamond_wait_activation(ctx))
>  			break;
>  
> +		do_prep = damon_has_prep(ctx) && ctx->ops.prep_probes;

[Severity: Low]
Could this short-circuit logic be reordered to check ctx->ops.prep_probes
before damon_has_prep(ctx)?

If the underlying operation set does not implement the prep_probes callback,
evaluating damon_has_prep() first will result in unnecessary list traversals
during every sample interval in the kdamond hot loop.

While the probe lists are typically short, evaluating ctx->ops.prep_probes
first would cleanly avoid this overhead when the callback is unused.

-- 
Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=7