All of lore.kernel.org
 help / color / mirror / Atom feed
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 07/14] mm/damon/sysfs: move targets setup code to a separated function
Date: Fri, 29 Apr 2022 16:05:59 +0000	[thread overview]
Message-ID: <20220429160606.127307-8-sj@kernel.org> (raw)
In-Reply-To: <20220429160606.127307-1-sj@kernel.org>

From: SeongJae Park <sj@kernel.org>

This commit separates DAMON sysfs interface's monitoring context targets
setup code to a new function for better readability.

Signed-off-by: SeongJae Park <sj@kernel.org>
---
 mm/damon/sysfs.c | 49 +++++++++++++++++++++++++++---------------------
 1 file changed, 28 insertions(+), 21 deletions(-)

diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c
index 988247d35862..331647ab6396 100644
--- a/mm/damon/sysfs.c
+++ b/mm/damon/sysfs.c
@@ -2119,6 +2119,31 @@ static int damon_sysfs_set_regions(struct damon_target *t,
 	return 0;
 }
 
+static int damon_sysfs_add_target(struct damon_sysfs_target *sys_target,
+		struct damon_ctx *ctx)
+{
+	struct damon_target *t = damon_new_target();
+	int err = -EINVAL;
+
+	if (!t)
+		return -ENOMEM;
+	if (ctx->ops.id == DAMON_OPS_VADDR ||
+			ctx->ops.id == DAMON_OPS_FVADDR) {
+		t->pid = find_get_pid(sys_target->pid);
+		if (!t->pid)
+			goto destroy_targets_out;
+	}
+	damon_add_target(ctx, t);
+	err = damon_sysfs_set_regions(t, sys_target->regions);
+	if (err)
+		goto destroy_targets_out;
+	return 0;
+
+destroy_targets_out:
+	damon_sysfs_destroy_targets(ctx);
+	return err;
+}
+
 static int damon_sysfs_set_targets(struct damon_ctx *ctx,
 		struct damon_sysfs_targets *sysfs_targets)
 {
@@ -2129,28 +2154,10 @@ static int damon_sysfs_set_targets(struct damon_ctx *ctx,
 		return -EINVAL;
 
 	for (i = 0; i < sysfs_targets->nr; i++) {
-		struct damon_sysfs_target *sys_target =
-			sysfs_targets->targets_arr[i];
-		struct damon_target *t = damon_new_target();
-
-		if (!t) {
-			damon_sysfs_destroy_targets(ctx);
-			return -ENOMEM;
-		}
-		if (ctx->ops.id == DAMON_OPS_VADDR ||
-				ctx->ops.id == DAMON_OPS_FVADDR) {
-			t->pid = find_get_pid(sys_target->pid);
-			if (!t->pid) {
-				damon_sysfs_destroy_targets(ctx);
-				return -EINVAL;
-			}
-		}
-		damon_add_target(ctx, t);
-		err = damon_sysfs_set_regions(t, sys_target->regions);
-		if (err) {
-			damon_sysfs_destroy_targets(ctx);
+		err = damon_sysfs_add_target(
+				sysfs_targets->targets_arr[i], ctx);
+		if (err)
 			return err;
-		}
 	}
 	return 0;
 }
-- 
2.25.1



  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 ` [PATCH 02/14] mm/damon/core: finish kdamond as soon as any callback returns an error sj
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 ` sj [this message]
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-8-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 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.