mm/damon/core: remove damon_verify_nr_regions()

When CONFIG_DAMON_DEBUG_SANITY is enabled, damon_verify_nr_regions() is
called for each damon_nr_regions() invocation.  damon_veify_nr_regions()
iterates all regions.  damon_nr_regions() is called for each region in
kdamond_reset_aggregated() and damos_apply_scheme().  Hence it imposes
O(n**2) overhead where n is the number of regions.

Though the verification is enabled only under DAMON_DEBUG_SANITY, which is
not for production use cases, it could be too high overhead.  Meanwhile,
damon_verify_ctx() is doing the damon_nr_regions() test.  Because
damon_verify_ctx() is called for each kdamond_call(), the test coverage
from damon_verify_ctx() could be sufficient.  Remove damon_nr_regions()
verification.

Link: https://lore.kernel.org/20260522154026.80546-10-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
SeongJae Park 2026-05-22 08:40:20 -07:00 committed by Andrew Morton
parent 8f793f1ad5
commit b8db646fe9

View File

@ -686,27 +686,8 @@ void damon_destroy_target(struct damon_target *t, struct damon_ctx *ctx)
damon_free_target(t);
}
#ifdef CONFIG_DAMON_DEBUG_SANITY
static void damon_verify_nr_regions(struct damon_target *t)
{
struct damon_region *r;
unsigned int count = 0;
damon_for_each_region(r, t)
count++;
WARN_ONCE(count != t->nr_regions, "t->nr_regions (%u) != count (%u)\n",
t->nr_regions, count);
}
#else
static void damon_verify_nr_regions(struct damon_target *t)
{
}
#endif
unsigned int damon_nr_regions(struct damon_target *t)
{
damon_verify_nr_regions(t);
return t->nr_regions;
}