From: SJ Park <sj@kernel.org>
To: Karl Mehltretter <kmehltretter@gmail.com>
Cc: SJ Park <sj@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
damon@lists.linux.dev, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] mm/damon/core: preserve the caller's quota in damon_new_scheme()
Date: Mon, 21 Sep 2026 10:11:54 -0700 [thread overview]
Message-ID: <20260921171155.3359-1-sj@kernel.org> (raw)
In-Reply-To: <20260921003047.12041-2-kmehltretter@gmail.com>
On Mon, 21 Sep 2026 02:30:46 +0200 Karl Mehltretter <kmehltretter@gmail.com> wrote:
> damon_new_scheme() calls damos_quota_init() on the caller's quota before
> copying it to the new scheme. This clears the caller's effective quota,
> feedback input and charging state as a side effect.
Apparently the above paragraph assumes it is called under damon_commit_ctx().
Lack of the context makes this quite confusing. Could you please rewrite?
>
> damon_commit_ctx() first copies the running context into a temporary
> context for validating the proposed parameters. When
> damon_commit_schemes() creates the temporary schemes, it passes the quota
> of each running scheme to damon_new_scheme(). The quota pointer therefore
> refers to the running scheme, and damos_quota_init() clears that scheme's
> state before it is copied to the temporary scheme. Even an update
> rejected with -EINVAL loses the running quota state.
>
> For a size quota, this discards the bytes already charged and allows the
> scheme to use a fresh quota before the reset interval has elapsed. For a
> goal-driven quota, the consist tuner loses its accumulated input and
> restarts from its minimum input. A time quota loses its throughput
> estimate and falls back to the initial estimate.
>
> The constructor side effect was introduced by commit 70e0c1d1bf94
> ("mm/damon/core: factor out 'damos_quota' private fileds initialization").
> Commit 60bd24f272d0 ("mm/damon/sysfs: test commit input against realistic
> destination"), merged in v6.19, exposed it when
> validating sysfs updates against a copy of the running context. Commit
> b90408ef1163 ("mm/damon/core: safely validate src on damon_commit_ctx()")
> later moved that validation into the core API.
>
> Sashiko reported the same side effect [1] on the RFC of the core API
> change.
>
> Copy the quota to the new scheme first, then initialize that copy. Make
> damos_quota_init() return void, since its return value is no longer needed.
>
> Fixes: 70e0c1d1bf94 ("mm/damon/core: factor out 'damos_quota' private fileds initialization")
> Cc: <stable@vger.kernel.org> # 6.19.x
The Fixes commit was introduced in 6.1. So the comment on Cc: stable@ line
should be fixed. Also, at the time of the commit, validation purpose running
ctx committing didn't exist. So, the issue you are explaining cannot happen on
the commit. Or, am I missing something? If I'm not incorrect, could you
please find the proper Fixes: commit and fix it?
Also, are you using LLM for Fixes...? If so, the LLM seems not good at that.
Your previous patch also made a similar mistake. Please manually work on
Fixes: tag or double check LLM's output.
> Link: https://lore.kernel.org/damon/20260702212143.0CB6D1F00A3D@smtp.kernel.org/ [1]
> Assisted-by: LLM
> Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>
> ---
> mm/damon/core.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
The code change looks correct to me.
Thanks,
SJ
[...]
next prev parent reply other threads:[~2026-09-21 17:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-21 0:30 [PATCH 0/2] mm/damon: preserve quota state when constructing schemes Karl Mehltretter
2026-09-21 0:30 ` [PATCH 1/2] mm/damon/core: preserve the caller's quota in damon_new_scheme() Karl Mehltretter
2026-09-21 17:11 ` SJ Park [this message]
2026-09-22 12:08 ` SJ Park
2026-09-21 0:30 ` [PATCH 2/2] mm/damon/tests/core-kunit: test preservation of caller quota state Karl Mehltretter
2026-09-22 12:28 ` SJ Park
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260921171155.3359-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=damon@lists.linux.dev \
--cc=kmehltretter@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®