]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/damon/vaddr: add 'nr_piece == 1' check in damon_va_evenly_split_region()
authorZheng Yejian <zhengyejian@huaweicloud.com>
Tue, 22 Oct 2024 08:39:27 +0000 (16:39 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 7 Nov 2024 04:11:18 +0000 (20:11 -0800)
As discussed in [1], damon_va_evenly_split_region() is called to
size-evenly split a region into 'nr_pieces' small regions,
when nr_pieces == 1, no actual split is required. Check that case
for better code readability and add a simple kunit testcase.

[1] https://lore.kernel.org/all/20241021163316.12443-1-sj@kernel.org/

Link: https://lkml.kernel.org/r/20241022083927.3592237-3-zhengyejian@huaweicloud.com
Signed-off-by: Zheng Yejian <zhengyejian@huaweicloud.com>
Reviewed-by: SeongJae Park <sj@kernel.org>
Cc: Fernand Sieber <sieberf@amazon.com>
Cc: Leonard Foerster <foersleo@amazon.de>
Cc: Shakeel Butt <shakeel.butt@linux.dev>
Cc: Ye Weihua <yeweihua4@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/damon/tests/vaddr-kunit.h
mm/damon/vaddr.c

index fcdccb614fd8554a973a12fb7440a640f6d38976..b9fe3bc8472ba10eb77f01508bac93ea9194df4c 100644 (file)
@@ -300,6 +300,7 @@ static void damon_test_split_evenly(struct kunit *test)
        damon_test_split_evenly_fail(test, 0, 100, 0);
        damon_test_split_evenly_succ(test, 0, 100, 10);
        damon_test_split_evenly_succ(test, 5, 59, 5);
+       damon_test_split_evenly_succ(test, 4, 6, 1);
        damon_test_split_evenly_succ(test, 0, 3, 2);
        damon_test_split_evenly_fail(test, 5, 6, 2);
 }
index 86f612fbf8866f330a6257de97d6e1604db3905e..b9eaa20b73b9abca3efbc0673357c5fa1caa7579 100644 (file)
@@ -72,6 +72,9 @@ static int damon_va_evenly_split_region(struct damon_target *t,
        if (!r || !nr_pieces)
                return -EINVAL;
 
+       if (nr_pieces == 1)
+               return 0;
+
        orig_end = r->ar.end;
        sz_orig = damon_sz_region(r);
        sz_piece = ALIGN_DOWN(sz_orig / nr_pieces, DAMON_MIN_REGION);