From: Xin Hao <xhao@linux.alibaba.com>
To: sjpark@amazon.de
Cc: xhao@linux.alibaba.com, akpm@linux-foundation.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 2/2] mm/damon/dbgfs: Add adaptive_targets list check before enable monitor_on
Date: Wed, 20 Oct 2021 09:42:33 +0800 [thread overview]
Message-ID: <f78a4c9a2c4ddf037cc3d9b405e51d9fcf5b6648.1634693911.git.xhao@linux.alibaba.com> (raw)
In-Reply-To: <cover.1634693911.git.xhao@linux.alibaba.com>
When the ctx->adaptive_targets list is empty,
I did some test on monitor_on interface like this.
# echo > /sys/kernel/debug/damon/target_ids
Though the ctx->adaptive_targets list is empty, but the
kthread_run still be called, and the kdamond.x thread still
be created, this is meaningless.
So there adds a judgment in 'dbgfs_monitor_on_write',
if the ctx->adaptive_targets list is empty, return -EINVAL.
Signed-off-by: Xin Hao <xhao@linux.alibaba.com>
---
include/linux/damon.h | 1 +
mm/damon/core.c | 5 +++++
mm/damon/dbgfs.c | 13 ++++++++++---
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/include/linux/damon.h b/include/linux/damon.h
index 715dadd21f7c..4fce5f1f6dad 100644
--- a/include/linux/damon.h
+++ b/include/linux/damon.h
@@ -316,6 +316,7 @@ void damon_destroy_scheme(struct damos *s);
struct damon_target *damon_new_target(unsigned long id);
void damon_add_target(struct damon_ctx *ctx, struct damon_target *t);
+bool damon_targets_empty(struct damon_ctx *ctx);
void damon_free_target(struct damon_target *t);
void damon_destroy_target(struct damon_target *t);
unsigned int damon_nr_regions(struct damon_target *t);
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 2f6785737902..c3a1374dbe0b 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -156,6 +156,11 @@ void damon_add_target(struct damon_ctx *ctx, struct damon_target *t)
list_add_tail(&t->list, &ctx->adaptive_targets);
}
+bool damon_targets_empty(struct damon_ctx *ctx)
+{
+ return list_empty(&ctx->adaptive_targets);
+}
+
static void damon_del_target(struct damon_target *t)
{
list_del(&t->list);
diff --git a/mm/damon/dbgfs.c b/mm/damon/dbgfs.c
index 38188347d8ab..9dee29f7d103 100644
--- a/mm/damon/dbgfs.c
+++ b/mm/damon/dbgfs.c
@@ -865,12 +865,19 @@ static ssize_t dbgfs_monitor_on_write(struct file *file,
return -EINVAL;
}
- if (!strncmp(kbuf, "on", count))
+ if (!strncmp(kbuf, "on", count)) {
+ int i;
+
+ for (i = 0; i < dbgfs_nr_ctxs; i++) {
+ if (damon_targets_empty(dbgfs_ctxs[i]))
+ return -EINVAL;
+ }
err = damon_start(dbgfs_ctxs, dbgfs_nr_ctxs);
- else if (!strncmp(kbuf, "off", count))
+ } else if (!strncmp(kbuf, "off", count)) {
err = damon_stop(dbgfs_ctxs, dbgfs_nr_ctxs);
- else
+ } else {
err = -EINVAL;
+ }
if (err)
ret = err;
--
2.31.0
next prev parent reply other threads:[~2021-10-20 1:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-20 1:42 [PATCH v3 0/2] mm/damon: Fix some small bugs Xin Hao
2021-10-20 1:42 ` [PATCH v3 1/2] mm/damon: Remove unnecessary variable initialization Xin Hao
2021-10-20 7:01 ` SeongJae Park
2021-10-20 1:42 ` Xin Hao [this message]
2021-10-20 7:21 ` [PATCH v3 2/2] mm/damon/dbgfs: Add adaptive_targets list check before enable monitor_on SeongJae Park
2021-10-20 8:12 ` SeongJae Park
2021-10-20 8:15 ` Xin Hao
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=f78a4c9a2c4ddf037cc3d9b405e51d9fcf5b6648.1634693911.git.xhao@linux.alibaba.com \
--to=xhao@linux.alibaba.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=sjpark@amazon.de \
/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 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.