After damos_set_effective_quota(), the effective size quota may be lower than min_region_sz (e.g., when the temporal quota goal is [over-]achieved). In this situation, damos_adjust_quota() will still calculates quota->min_score. However, this min_score will not be used in this window, because in damon_do_apply_schemes(), damos_quota_is_full() will always returns true, preventing the scheme from being applied to any region. Therefore, add a short circuit for 'esz < min_region_sz' schemes to early return from damos_adjust_quota() before calculating min_score. Signed-off-by: Liew Rui Yan --- Changes from RFC v1: - RFC v1: https://lore.kernel.org/damon/20260912124406.96535-1-aethernet65535@gmail.com - Make patch more complete by covering 'esz < min_region_sz' instead of covering "temporal quota goal is [over-]achieved" only. --- mm/damon/core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index ce8c6f99106e..15758525765e 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -3318,6 +3318,8 @@ static void damos_adjust_quota(struct damon_ctx *c, struct damos *s) damos_trace_esz(c, s, quota); } + if (damos_quota_is_full(quota, c->min_region_sz)) + return; if (!c->ops.get_scheme_score) return; -- 2.55.0