When the temporal quota goal tuner determines that the goal has been achieved (score >= 10000), it sets esz_bp to zero so that the effective quota (esz) becomes zero. However, damos_set_effective_quota() clamps the quota to min_region_sz, preventing the quota from ever reaching zero. Fix this by adding a check for zero esz_bp. Fixes: 8bbde987c2b8 ("mm/damon/core: disallow time-quota setting zero esz") Cc: # v7.1.x Signed-off-by: Liew Rui Yan --- Changes from v1: - v1: https://lore.kernel.org/damon/20260901105951.106246-1-aethernet65535@gmail.com - Changed implementation. The initial solution skipped the min_region_sz clamping when esz was already zero. However, this would revert the fix from commit 8bbde987c2b8 and cause a regression. This revision fixes the issue by adding a specific check for a zero esz_bp. - Changed patch title, original title: fix quota could not be set to zero --- mm/damon/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index e13a154aa4b9..8e3ded1a2cf6 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -3133,6 +3133,9 @@ static void damos_set_effective_quota(struct damon_ctx *ctx, struct damos *s) if (quota->sz && quota->sz < esz) esz = quota->sz; + if (!quota->esz_bp) + esz = 0; + quota->esz = esz; } -- 2.55.0