Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mm/damon/vaddr: add 'nr_piece == 1' check in damon_va_evenly_split_region()

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>

authored by

Zheng Yejian and committed by
Andrew Morton
477327e1 f3c7a1ed

+4
+1
mm/damon/tests/vaddr-kunit.h
··· 300 300 damon_test_split_evenly_fail(test, 0, 100, 0); 301 301 damon_test_split_evenly_succ(test, 0, 100, 10); 302 302 damon_test_split_evenly_succ(test, 5, 59, 5); 303 + damon_test_split_evenly_succ(test, 4, 6, 1); 303 304 damon_test_split_evenly_succ(test, 0, 3, 2); 304 305 damon_test_split_evenly_fail(test, 5, 6, 2); 305 306 }
+3
mm/damon/vaddr.c
··· 72 72 if (!r || !nr_pieces) 73 73 return -EINVAL; 74 74 75 + if (nr_pieces == 1) 76 + return 0; 77 + 75 78 orig_end = r->ar.end; 76 79 sz_orig = damon_sz_region(r); 77 80 sz_piece = ALIGN_DOWN(sz_orig / nr_pieces, DAMON_MIN_REGION);