From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42D5EC7115A for ; Sun, 22 Jun 2025 21:38:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C6B806B00AB; Sun, 22 Jun 2025 17:38:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C1BC46B00AC; Sun, 22 Jun 2025 17:38:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AE3726B00AD; Sun, 22 Jun 2025 17:38:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 9A2786B00AB for ; Sun, 22 Jun 2025 17:38:06 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 5BA5A140F2E for ; Sun, 22 Jun 2025 21:38:06 +0000 (UTC) X-FDA: 83584349772.24.8085A24 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf07.hostedemail.com (Postfix) with ESMTP id C2E6D40002 for ; Sun, 22 Jun 2025 21:38:04 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="RsZUw/9b"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750628284; a=rsa-sha256; cv=none; b=EjmkAZ7VrUug1WRsIzR/XtQ+5QV7RPzfYv61xb3mjAuQm2nRq3M8sXVxBpssO7pR+p4sWl Ynz3YzmbGa1aFCE09TrMo2pV7RK/fKBqmncmFtFXMo3jxus+mQ3h9fW/d1eT67Yt3GiAd9 ivwI0LKIeQ/3hejy5tHz9XpV3jhx12w= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="RsZUw/9b"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750628284; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+klbgPdpmgP8vI0dNfaznG1JDbwVJt2jzu/oxgZx3Rs=; b=3/AUYBL49JNe2V035jdAB5EdV12/rrV8v5zvJUM7afterWXz66+LNZUFMsWyytClYrD7cn mcrFvwRMQXUREFIcnIR3nkqlz19RcQR6/TmMMbQvv+ZqC171pk6sv5TGj8zfnby5dcBtOW 4+THf4h0d/qujvh3NQZ6vsGkyWycZW0= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 35EAC6112D; Sun, 22 Jun 2025 21:38:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5599C4CEE3; Sun, 22 Jun 2025 21:38:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750628283; bh=2SWkXiGlsBU3I4JCOOhREoA9TlYEWmDdkhbiiUqC9nQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RsZUw/9bBTCVa2s3TVispyvjrN+m4SvDz1lbWHqX3NzU23mT4TTCgBq0XRrU49nCa iRcmujoy9e8MDup4bavcUXMzJJ2m34elfk/E2d+07u+tqTvs+2ZHdKRBgTJfl2RpNn IN88njUNn9hul1QkjkrZsVeCHOAANpM55q1OirWIbaD4qdMZenO452gdUeaInKbHEM CWOj84wh8s1ExDb0GDZbRmtrpeuyyCa//i09XZatWuhxPngoo5/M3ZvLZ/V9+tthwX L9cZALwqgsJEOvjDlYIKBJZ/y7WsDllfNle6ONUoOzprtQF3KOU3Zya56fqVUCyvJm 7TrP0vj//bDHQ== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 1/5] mm/damon/sysfs-schemes: decouple from damos_quota_goal_metric Date: Sun, 22 Jun 2025 14:37:55 -0700 Message-Id: <20250622213759.50930-2-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250622213759.50930-1-sj@kernel.org> References: <20250622213759.50930-1-sj@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: C2E6D40002 X-Rspamd-Server: rspam10 X-Stat-Signature: 1g9robxf95frymi5tsike14y6gu16c4n X-HE-Tag: 1750628284-670300 X-HE-Meta: U2FsdGVkX19wkX1UyFFKDOn2Or5gAKR+9snVq0EQrtzI9Z88phK38YQ8rBHhl+f7x/J6Tq9HoS5lOJug0H7KwXOVVM1T8Y98rWL67AebDf3L3wZY1m2PcvXQvC3y3Q1fEakEvw+6g/ue/RZA/pd/ZO0Ov77kcwXkzKLNt1VEdqQ/G14+pkZuaf0Pxy8j+CiV9GVSLGjTi1Yac3UOygfJdUS46WNym1IygwQw6xJlvzFGozh4fPvXjCf21WI7zTUQhQfbM1I/XP1sVq0aXZo/SVWUa4d4vfhjQnRNJJTJWywitxnbVRyO062mLXB3lqopCdO0reIjbLfOBicIVeyBKWN886mVz3NMFS2tdbELMDub35qPhxvSBVIKYU699m5LFclBfpwk19AJjvaOgYpJKzwSJdpJxAJOSD9vr+r1HwlAHtSP5j4rr0AKJSry0SzB1rjQTTfj2CeKOOt4S7Fcwaoy2UPP77JaK9ef8ptSBf2Fj2WHaI49pWAYKYXyU4gAl9WlYz7Y1L3h+8gD2sxWkkvpJFmavHpptRSUzfBvIJoToVMAuiH0uC3qFtoE79m4l3V3pEK43bw60TeBpDIeiZDMgB8PLLOVs1KoqavDAladXd9BfgI5l5hGGqK91Z1XCYAhci/2P4ANLJkmXcGmnN6CrKByhhBcr8Oa9IMPBJviE8y4O1uns+pr4OZtehgjTIjuVX/xWvvqn4iyRgzFpchsvmoWIKiv4wVVB+9wIEaoUKQWWqqW2WNpvbKArijkITnHA4y9t5nm5yA/befRg0SvTOxayxQ94QHqa5RrDmaohqWwev1B3pcIIMWP1kMsmUQH9gbC0xyZvff+b5tRUZ2Lj3M8l3GmPJBBXcMwVP48W6a5AmgVrTsM78kvH9n9mBCaMy28xPaB46Vux5Ymo93lXxpYli4jzWIaO6WcsZsPjhZxESijt0v35jr3P/vRfEn42kGOJqecPq6X5Nv mvP1dZRl u602p9SRC4e7Oyu98iGnTdvqN1cNDa1UkPL2jcOkhQFZrci5XKLR88Eh54lONT9TeJQqHWHTPGPX73JQpe65BOB75ZY8JnR56Aa8zwJyqfaSKJ6XRL1UOmOs/5q05JL0urZkEOuja3wCiYGfOwkyWd8ES2d3j5GpmD7kb3jKcT2204PiemMUMcoJPNOE02cN4gVhDHhLGOiZGKYxKaC2xxkNX84f3A5hjTB5B4yc3XujzGZKP3RmougB361/m4csVl7z8lM93wB2R1PXzHz7/HBLNJA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Decouple DAMOS sysfs interface from damos_quota_goal_metric. For this, define and use new sysfs-schemes internal data structure that maps the user-space keywords and damos_quota_goal_metric, instead of having the implicit and unflexible array index rule. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 55 ++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 30ae7518ffbf..3747dc6678f2 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -941,27 +941,51 @@ struct damos_sysfs_quota_goal { int nid; }; -/* This should match with enum damos_quota_goal_metric */ -static const char * const damos_sysfs_quota_goal_metric_strs[] = { - "user_input", - "some_mem_psi_us", - "node_mem_used_bp", - "node_mem_free_bp", -}; - static struct damos_sysfs_quota_goal *damos_sysfs_quota_goal_alloc(void) { return kzalloc(sizeof(struct damos_sysfs_quota_goal), GFP_KERNEL); } +struct damos_sysfs_qgoal_metric_name { + enum damos_quota_goal_metric metric; + char *name; +}; + +static +struct damos_sysfs_qgoal_metric_name damos_sysfs_qgoal_metric_names[] = { + { + .metric = DAMOS_QUOTA_USER_INPUT, + .name = "user_input", + }, + { + .metric = DAMOS_QUOTA_SOME_MEM_PSI_US, + .name = "some_mem_psi_us", + }, + { + .metric = DAMOS_QUOTA_NODE_MEM_USED_BP, + .name = "node_mem_used_bp", + }, + { + .metric = DAMOS_QUOTA_NODE_MEM_FREE_BP, + .name = "node_mem_free_bp", + }, +}; + static ssize_t target_metric_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { struct damos_sysfs_quota_goal *goal = container_of(kobj, struct damos_sysfs_quota_goal, kobj); + int i; - return sysfs_emit(buf, "%s\n", - damos_sysfs_quota_goal_metric_strs[goal->metric]); + for (i = 0; i < ARRAY_SIZE(damos_sysfs_qgoal_metric_names); i++) { + struct damos_sysfs_qgoal_metric_name *metric_name; + + metric_name = &damos_sysfs_qgoal_metric_names[i]; + if (metric_name->metric == goal->metric) + return sysfs_emit(buf, "%s\n", metric_name->name); + } + return -EINVAL; } static ssize_t target_metric_store(struct kobject *kobj, @@ -969,11 +993,14 @@ static ssize_t target_metric_store(struct kobject *kobj, { struct damos_sysfs_quota_goal *goal = container_of(kobj, struct damos_sysfs_quota_goal, kobj); - enum damos_quota_goal_metric m; + int i; + + for (i = 0; i < ARRAY_SIZE(damos_sysfs_qgoal_metric_names); i++) { + struct damos_sysfs_qgoal_metric_name *metric_name; - for (m = 0; m < NR_DAMOS_QUOTA_GOAL_METRICS; m++) { - if (sysfs_streq(buf, damos_sysfs_quota_goal_metric_strs[m])) { - goal->metric = m; + metric_name = &damos_sysfs_qgoal_metric_names[i]; + if (sysfs_streq(buf, metric_name->name)) { + goal->metric = metric_name->metric; return count; } } -- 2.39.5