* [PATCH] mm/damon/stat: avoid iterating targets in damon_stat_sort_regions()
@ 2026-08-14 14:54 Enze Li
2026-08-14 15:00 ` sashiko-bot
0 siblings, 1 reply; 2+ messages in thread
From: Enze Li @ 2026-08-14 14:54 UTC (permalink / raw)
To: sj, akpm; +Cc: damon, linux-mm, linux-kernel, enze.li, Enze Li
damon/stat module creates only one target in damon_stat_build_ctx(), and
the comment in damon_stat_sort_regions() already says so. But the code
still iterates adaptive_targets with damon_for_each_target(), which is
needlessly verbose and adds an extra indentation level.
Just use list_first_entry() to grab the single target, with a
list_empty() check to be safe.
Signed-off-by: Enze Li <lienze@kylinos.cn>
---
mm/damon/stat.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/mm/damon/stat.c b/mm/damon/stat.c
index b05b68f73e10..c8b1e909bbac 100644
--- a/mm/damon/stat.c
+++ b/mm/damon/stat.c
@@ -91,16 +91,15 @@ static int damon_stat_sort_regions(struct damon_ctx *c,
unsigned int nr_regions = 0;
unsigned long total_sz = 0;
- damon_for_each_target(t, c) {
- /* there is only one target */
- region_pointers = kmalloc_objs(*region_pointers,
- damon_nr_regions(t));
- if (!region_pointers)
- return -ENOMEM;
- damon_for_each_region(r, t) {
- region_pointers[nr_regions++] = r;
- total_sz += r->ar.end - r->ar.start;
- }
+ if (list_empty(&c->adaptive_targets))
+ return -EINVAL;
+ t = list_first_entry(&c->adaptive_targets, struct damon_target, list);
+ region_pointers = kmalloc_objs(*region_pointers, damon_nr_regions(t));
+ if (!region_pointers)
+ return -ENOMEM;
+ damon_for_each_region(r, t) {
+ region_pointers[nr_regions++] = r;
+ total_sz += r->ar.end - r->ar.start;
}
sort(region_pointers, nr_regions, sizeof(*region_pointers),
damon_stat_cmp_regions, NULL);
base-commit: 6c2cdf00fe5205942b5f29e16905603a1717b931
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] mm/damon/stat: avoid iterating targets in damon_stat_sort_regions()
2026-08-14 14:54 [PATCH] mm/damon/stat: avoid iterating targets in damon_stat_sort_regions() Enze Li
@ 2026-08-14 15:00 ` sashiko-bot
0 siblings, 0 replies; 2+ messages in thread
From: sashiko-bot @ 2026-08-14 15:00 UTC (permalink / raw)
To: Enze Li; +Cc: damon
> damon/stat module creates only one target in damon_stat_build_ctx(), and
> the comment in damon_stat_sort_regions() already says so. But the code
> still iterates adaptive_targets with damon_for_each_target(), which is
> needlessly verbose and adds an extra indentation level.
>
> Just use list_first_entry() to grab the single target, with a
> list_empty() check to be safe.
>
> Signed-off-by: Enze Li <lienze@kylinos.cn>
Sashiko has reviewed this patch and found no issues. It looks great!
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260814145409.553724-1-lienze@kylinos.cn?part=1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-14 15:00 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-14 14:54 [PATCH] mm/damon/stat: avoid iterating targets in damon_stat_sort_regions() Enze Li
2026-08-14 15:00 ` sashiko-bot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.