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

SJ Park <[email protected]> Mon, 27 Jul 2026 08:02:28 -0700
Newsgroups dev.linux.lists.damon
Message-ID <[email protected]>
On Mon, 27 Jul 2026 14:44:21 +0000 [email protected] wrote:

> 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.

Good suggestion, I will do so.

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


Thanks,
SJ