Thread (1 message) 1 message, 1 author, 2020-07-07

Re: [PATCH v17 03/15] mm/damon: Implement region based sampling

From: SeongJae Park <hidden>
Date: 2020-07-07 07:55:42
Also in: linux-mm, lkml

On Mon, 6 Jul 2020 13:53:10 +0200 SeongJae Park [off-list ref] wrote:
From: SeongJae Park <redacted>

This commit implements DAMON's target address space independent high
level logics for basic access check and region based sampling.  This
doesn't work alone, but needs the target address space specific low
level pritimives implementation for the monitoring target address ranges
construction and the access check, though.  A reference implementation
of those will be provided by a later commit.  Nevertheless, users can
implement and use their own versions for their specific use cases.
[...]
+/**
+ * damon_start() - Starts monitoring with given context.
+ * @ctx:	monitoring context
+ *
+ * Return: 0 on success, negative error code otherwise.
+ */
+int damon_start(struct damon_ctx *ctx)
+{
+	int err = -EBUSY;
+
+	mutex_lock(&ctx->kdamond_lock);
+	if (!ctx->kdamond) {
+		err = 0;
+		ctx->kdamond_stop = false;
+		ctx->kdamond = kthread_run(kdamond_fn, ctx, "kdamond");
Oops, this means 'kdamond_fn' could see the unset '->kdamond'.  I will use
'kthread_create()' and 'wake_up_process()' in the next spin.
+		if (IS_ERR(ctx->kdamond))
+			err = PTR_ERR(ctx->kdamond);
+	}
+	mutex_unlock(&ctx->kdamond_lock);
+
+	return err;
+}
So, the change would be something like below:
--- a/mm/damon.c
+++ b/mm/damon.c
@@ -1464,9 +1464,11 @@ int damon_start(struct damon_ctx *ctx)
        if (!ctx->kdamond) {
                err = 0;
                ctx->kdamond_stop = false;
-               ctx->kdamond = kthread_run(kdamond_fn, ctx, "kdamond");
+               ctx->kdamond = kthread_create(kdamond_fn, ctx, "kdamond");
                if (IS_ERR(ctx->kdamond))
                        err = PTR_ERR(ctx->kdamond);
+               else
+                       wake_up_process(ctx->kdamond);
        }
        mutex_unlock(&ctx->kdamond_lock);

Thanks,
SeongJae Park
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help