Re: [RESEND PATCH] mm/damon/tests/core-kunit: add test for unconditionally skipping the last region

From: SJ Park

Date: Sat Sep 19 2026 - 12:07:40 EST


On Sat, 19 Sep 2026 16:01:58 +0800 Liew Rui Yan <aethernet65535@xxxxxxxxx> wrote:

> Commit 50585192bc2e ("mm/damon/schemes: skip already charged targets and
> regions") introduced a minor issue that causes the last region to be
> skipped before it is processed.
>
> Example:
>
> 1. Target has 2 regions: R1 (0-100 bytes) and R2 (100-200 bytes).
> 2. Quota is configured to process only 100 bytes per window.
> 3. Window 1: Processes R1 (0-100). Quota is full. charge_{target,
> addr}_from is saved at (Target, 100).
> 4. Window 2: The loop reaches R2. Because R2 is
> damon_last_region(t), the old code unconditionally returns true,
> skipping R2 entirely and resetting the charge_{target,addr}_from.
>
> Result: R2 is permanently skipped even though it has never been
> processed.
>
> Add a test to prevent this regression in the future.
>
> Signed-off-by: Liew Rui Yan <aethernet65535@xxxxxxxxx>

Other than a trivial style that I commented below,

Reviewed-by: SJ Park <sj@xxxxxxxxxx>

[...]
> +static void damon_test_last_region_quota_reset(struct kunit *test)
> +{
[...]
> + t = damon_new_target();
> + if (!t) {
> + kunit_skip(test, "target alloc fail");
> + }

Let's drop braces for single line, as suggested [1] in coding-style.

[1] https://docs.kernel.org/process/coding-style.html#placing-braces-and-spaces


Thanks,
SJ