mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
mm/damon/tests/core-kunit: add test for unconditionally skipping the last region
Commit b3723b596b ("mm/damon/core: fix unconditionally skip last
region") fixed a minor bug.
Add a KUnit test case to cover this behavior and prevent regressions in
the future.
Link: https://lore.kernel.org/20261006065209.41507-4-sj@kernel.org
Signed-off-by: Liew Rui Yan <aethernet65535@gmail.com>
Signed-off-by: SJ Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: SJ Park <sj@kernel.org>
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: David Gow <davidgow@davidgow.net>
This commit is contained in:
parent
8cb5bfe457
commit
20a0f2b470
|
|
@ -2439,6 +2439,47 @@ static void damos_test_esz_goal_temporal(struct kunit *test)
|
|||
damon_destroy_ctx(ctx);
|
||||
}
|
||||
|
||||
static void damon_test_last_region_quota_reset(struct kunit *test)
|
||||
{
|
||||
struct damos s = {0};
|
||||
struct damon_target *t;
|
||||
struct damon_region *r1, *r2;
|
||||
unsigned long min_region_sz = 1;
|
||||
bool skipped;
|
||||
|
||||
t = damon_new_target();
|
||||
if (!t)
|
||||
kunit_skip(test, "target alloc fail");
|
||||
|
||||
r1 = damon_new_region(0, 100);
|
||||
if (!r1) {
|
||||
damon_free_target(t);
|
||||
kunit_skip(test, "region 1 alloc fail");
|
||||
}
|
||||
damon_add_region(r1, t);
|
||||
|
||||
r2 = damon_new_region(100, 200);
|
||||
if (!r2) {
|
||||
damon_free_target(t);
|
||||
kunit_skip(test, "region 2 alloc fail");
|
||||
}
|
||||
damon_add_region(r2, t);
|
||||
|
||||
s.quota.charge_target_from = t;
|
||||
s.quota.charge_addr_from = r1->ar.end;
|
||||
|
||||
skipped = damos_skip_charged_region(t, r2, &s, min_region_sz);
|
||||
|
||||
/* 'r2' is not processed, it should not skip */
|
||||
KUNIT_EXPECT_EQ(test, skipped, false);
|
||||
|
||||
/* 'r2' is last region, it should reset charge_{target,addr}_from */
|
||||
KUNIT_EXPECT_PTR_EQ(test, s.quota.charge_target_from, NULL);
|
||||
KUNIT_EXPECT_EQ(test, s.quota.charge_addr_from, 0);
|
||||
|
||||
damon_free_target(t);
|
||||
}
|
||||
|
||||
static struct kunit_case damon_test_cases[] = {
|
||||
KUNIT_CASE(damon_test_target),
|
||||
KUNIT_CASE(damon_test_regions),
|
||||
|
|
@ -2482,6 +2523,7 @@ static struct kunit_case damon_test_cases[] = {
|
|||
KUNIT_CASE(damon_test_walk_control_obsolete),
|
||||
KUNIT_CASE(damon_test_rand),
|
||||
KUNIT_CASE(damos_test_esz_goal_temporal),
|
||||
KUNIT_CASE(damon_test_last_region_quota_reset),
|
||||
{},
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user