* Re: [PATCH] mm/damon/core: fix quota could not be set to zero
[not found] <20260901105951.106246-1-aethernet65535@gmail.com>
@ 2026-09-01 11:14 ` sashiko-bot
2026-09-01 12:40 ` Liew Rui Yan
2026-09-02 1:04 ` SJ Park
1 sibling, 1 reply; 3+ messages in thread
From: sashiko-bot @ 2026-09-01 11:14 UTC (permalink / raw)
To: Liew Rui Yan; +Cc: damon
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The patch places the `if (esz)` check after the throughput calculation, inadvertently reverting a previous fix (commit 8bbde987c2b8) and causing schemes with low throughput to permanently deactivate.
--
commit a1511f591a76665e55c325a03d3d47bf4ba87dc6
Author: Liew Rui Yan <aethernet65535@gmail.com>
mm/damon/core: fix quota could not be set to zero
This commit modifies the damos quota setting logic to skip clamping to
min_region_sz when the effective size quota is already zero. This is
intended to allow the temporal tuner's zero quota goal to be respected.
> diff --git a/mm/damon/core.c b/mm/damon/core.c
> index 3f89cfdf5f022..fdec7c0fe913a 100644
> --- a/mm/damon/core.c
> +++ b/mm/damon/core.c
> @@ -3122,7 +3122,8 @@ static void damos_set_effective_quota(struct damon_ctx *ctx, struct damos *s)
> else
> throughput = PAGE_SIZE * 1024;
> esz = min(throughput * quota->ms, esz);
> - esz = max(ctx->min_region_sz, esz);
> + if (esz)
> + esz = max(ctx->min_region_sz, esz);
[Severity: High]
Does placing the if (esz) check after the throughput calculation inadvertently
revert the fix from commit 8bbde987c2b8 and cause a regression where slow
schemes permanently deactivate?
If a damos scheme with a time quota processes regions slowly, integer division
can cause throughput to truncate to 0. When this happens, the calculation
esz = min(throughput * quota->ms, esz) evaluates to 0.
Because the new if (esz) check is placed after this min() calculation, the 0
value causes the check to fail, skipping the max(ctx->min_region_sz, esz)
clamp.
With esz == 0, damos_quota_is_full() always returns true, bypassing all
scheme operations. Since no regions are processed, total_charged_ns and
total_charged_sz are never updated. This leaves throughput permanently at 0,
resulting in an unrecoverable starvation loop.
> }
>
> if (quota->sz && quota->sz < esz)
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260901105951.106246-1-aethernet65535@gmail.com?part=1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] mm/damon/core: fix quota could not be set to zero
2026-09-01 11:14 ` [PATCH] mm/damon/core: fix quota could not be set to zero sashiko-bot
@ 2026-09-01 12:40 ` Liew Rui Yan
0 siblings, 0 replies; 3+ messages in thread
From: Liew Rui Yan @ 2026-09-01 12:40 UTC (permalink / raw)
To: sashiko-bot, sj; +Cc: aethernet65535, damon, sashiko-reviews
On Tue, 01 Sep 2026 11:14:40 +0000 sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [High] The patch places the `if (esz)` check after the throughput calculation, inadvertently reverting a previous fix (commit 8bbde987c2b8) and causing schemes with low throughput to permanently deactivate.
> --
>
> commit a1511f591a76665e55c325a03d3d47bf4ba87dc6
> Author: Liew Rui Yan <aethernet65535@gmail.com>
>
> mm/damon/core: fix quota could not be set to zero
>
> This commit modifies the damos quota setting logic to skip clamping to
> min_region_sz when the effective size quota is already zero. This is
> intended to allow the temporal tuner's zero quota goal to be respected.
>
> > diff --git a/mm/damon/core.c b/mm/damon/core.c
> > index 3f89cfdf5f022..fdec7c0fe913a 100644
> > --- a/mm/damon/core.c
> > +++ b/mm/damon/core.c
> > @@ -3122,7 +3122,8 @@ static void damos_set_effective_quota(struct damon_ctx *ctx, struct damos *s)
> > else
> > throughput = PAGE_SIZE * 1024;
> > esz = min(throughput * quota->ms, esz);
> > - esz = max(ctx->min_region_sz, esz);
> > + if (esz)
> > + esz = max(ctx->min_region_sz, esz);
>
> [Severity: High]
> Does placing the if (esz) check after the throughput calculation inadvertently
> revert the fix from commit 8bbde987c2b8 and cause a regression where slow
> schemes permanently deactivate?
>
> If a damos scheme with a time quota processes regions slowly, integer division
> can cause throughput to truncate to 0. When this happens, the calculation
> esz = min(throughput * quota->ms, esz) evaluates to 0.
>
> Because the new if (esz) check is placed after this min() calculation, the 0
> value causes the check to fail, skipping the max(ctx->min_region_sz, esz)
> clamp.
>
> With esz == 0, damos_quota_is_full() always returns true, bypassing all
> scheme operations. Since no regions are processed, total_charged_ns and
> total_charged_sz are never updated. This leaves throughput permanently at 0,
> resulting in an unrecoverable starvation loop.
Thank you for pointing out this! Yes, this can happen, and this is what
8bbde987c2b8 was fixing.
damos_goal_tune_esz_bp_temporal() will set quota->esz_bp to zero when
goal is archived, so this need fix by adding a check for quota->esz_bp.
'''
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 644daf5a1656..c07ae66caa49 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -3118,6 +3118,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 = quota->esz_bp / 10000;
+
quota->esz = esz;
}
'''
I will change this in next revision.
>
> > }
> >
> > if (quota->sz && quota->sz < esz)
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/20260901105951.106246-1-aethernet65535@gmail.com?part=1
Best regards,
Rui Yan
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] mm/damon/core: fix quota could not be set to zero
[not found] <20260901105951.106246-1-aethernet65535@gmail.com>
2026-09-01 11:14 ` [PATCH] mm/damon/core: fix quota could not be set to zero sashiko-bot
@ 2026-09-02 1:04 ` SJ Park
1 sibling, 0 replies; 3+ messages in thread
From: SJ Park @ 2026-09-02 1:04 UTC (permalink / raw)
To: Liew Rui Yan
Cc: SJ Park, Andrew Morton, damon, linux-mm, linux-kernel, stable
Hi Liew,
Seems Sashiko found something and you are planning to revision this patch that.
I will hold review until the next version is posted. Same for your other patch
that sent in the same time.
Thanks,
SJ
[...]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-09-02 1:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260901105951.106246-1-aethernet65535@gmail.com>
2026-09-01 11:14 ` [PATCH] mm/damon/core: fix quota could not be set to zero sashiko-bot
2026-09-01 12:40 ` Liew Rui Yan
2026-09-02 1:04 ` SJ Park
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox