All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.