From: sj@kernel.org
To: akpm@linux-foundation.org
Cc: linux-damon@amazon.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, SeongJae Park <sj@kernel.org>
Subject: [PATCH 02/14] mm/damon/core: finish kdamond as soon as any callback returns an error
Date: Fri, 29 Apr 2022 16:05:54 +0000 [thread overview]
Message-ID: <20220429160606.127307-3-sj@kernel.org> (raw)
In-Reply-To: <20220429160606.127307-1-sj@kernel.org>
From: SeongJae Park <sj@kernel.org>
When 'after_sampling()' or 'after_aggregation()' DAMON callbacks return
an error, kdamond continues the remaining loop once. It makes no much
sense to run the remaining part while something wrong already happened.
The context might be corrupted or having invalid data. This commit
therefore makes kdamond skips the remaining works and immediately finish
in the cases.
Signed-off-by: SeongJae Park <sj@kernel.org>
---
mm/damon/core.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index e28fbc3a1969..18c08e90563e 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1141,8 +1141,10 @@ static int kdamond_fn(void *data)
if (ctx->ops.prepare_access_checks)
ctx->ops.prepare_access_checks(ctx);
if (ctx->callback.after_sampling &&
- ctx->callback.after_sampling(ctx))
+ ctx->callback.after_sampling(ctx)) {
done = true;
+ continue;
+ }
kdamond_usleep(ctx->sample_interval);
@@ -1154,8 +1156,10 @@ static int kdamond_fn(void *data)
max_nr_accesses / 10,
sz_limit);
if (ctx->callback.after_aggregation &&
- ctx->callback.after_aggregation(ctx))
+ ctx->callback.after_aggregation(ctx)) {
done = true;
+ continue;
+ }
kdamond_apply_schemes(ctx);
kdamond_reset_aggregated(ctx);
kdamond_split_regions(ctx);
--
2.25.1
next prev parent reply other threads:[~2022-04-29 16:06 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-29 16:05 [PATCH 00/14] mm/damon: Support online tuning sj
2022-04-29 16:05 ` [PATCH 01/14] mm/damon/core: add a new callback for watermarks checks sj
2022-04-29 16:05 ` sj [this message]
2022-04-29 16:05 ` [PATCH 03/14] mm/damon/vaddr: generalize damon_va_apply_three_regions() sj
2022-04-29 16:05 ` [PATCH 04/14] mm/damon/vaddr: move 'damon_set_regions()' to core sj
2022-04-29 16:05 ` [PATCH 05/14] mm/damon/vaddr: remove damon_va_apply_three_regions() sj
2022-04-29 16:05 ` [PATCH 06/14] mm/damon/sysfs: prohibit multiple physical address space monitoring targets sj
2022-04-29 16:05 ` [PATCH 07/14] mm/damon/sysfs: move targets setup code to a separated function sj
2022-04-29 16:06 ` [PATCH 08/14] mm/damon/sysfs: reuse damon_set_regions() for regions setting sj
2022-04-29 16:06 ` [PATCH 09/14] mm/damon/sysfs: use enum for 'state' input handling sj
2022-04-29 16:06 ` [PATCH 10/14] mm/damon/sysfs: update schemes stat in the kdamond context sj
2022-04-29 16:06 ` [PATCH 11/14] mm/damon/sysfs: support online inputs update sj
2022-04-29 16:06 ` [PATCH 12/14] Docs/{ABI,admin-guide}/damon: Update for 'state' sysfs file input keyword, 'commit' sj
2022-04-29 16:06 ` [PATCH 13/14] mm/damon/reclaim: support online inputs update sj
2022-04-29 16:06 ` [PATCH 14/14] Docs/admin-guide/mm/damon/reclaim: document 'commit_inputs' parameter sj
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220429160606.127307-3-sj@kernel.org \
--to=sj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=linux-damon@amazon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox